Saya tahu tentang fungsi tidur dalam modul waktu tetapi bagaimana jika saya memiliki blok teks yang panjang Saya ingin pengguna membaca?
RandomPhobia
7
Cukup gunakan printuntuk menampilkan blok teks yang panjang dan kemudian input()atau yang raw_input('Press <ENTER> to continue')sesuai untuk versi Python Anda.
mhawke
8
Untuk blok teks yang panjang, yang terbaik adalah menggunakan input()(atau raw_input()pada Python 2.x) untuk meminta pengguna, daripada penundaan waktu. Pembaca cepat tidak akan mau menunggu penundaan, pembaca lambat mungkin ingin lebih banyak waktu penundaan, seseorang mungkin terganggu saat membacanya dan ingin lebih banyak waktu, dll. Juga, jika seseorang banyak menggunakan program, ia / dia mungkin terbiasa dengan cara kerjanya dan bahkan tidak perlu membaca teks yang panjang. Hanya lebih ramah untuk membiarkan pengguna mengontrol berapa lama blok teks ditampilkan untuk dibaca.
Jadi, saya menemukan ini berfungsi dengan sangat baik dalam upaya pengkodean saya. Saya hanya membuat fungsi di awal program saya,
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")
dan sekarang saya bisa menggunakan pause()fungsi kapan pun saya perlu seperti seolah-olah saya sedang menulis file batch. Misalnya , dalam program seperti ini:
import os
import system
def pause():
programPause = raw_input("Press the <ENTER> key to continue...")print("Think about what you ate for dinner last night...")
pause()
Sekarang jelas program ini tidak memiliki tujuan dan hanya untuk tujuan contoh, tetapi Anda dapat memahami dengan tepat apa yang saya maksud.
CATATAN: Untuk Python 3, Anda harus menggunakan yang inputbertentanganraw_input
Saya memiliki pertanyaan serupa dan saya menggunakan sinyal:
import signal
def signal_handler(signal_number, frame):print"Proceed ..."
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Jadi, Anda mendaftarkan pawang untuk sinyal SIGINT dan berhenti menunggu sinyal apa pun. Sekarang dari luar program Anda (misalnya dalam bash), Anda dapat menjalankan kill -2 <python_pid>, yang akan mengirim sinyal 2 (yaitu SIGINT) ke program python Anda. Program Anda akan memanggil penangan terdaftar Anda dan melanjutkan menjalankan.
Seperti yang ditunjukkan oleh komentar mhawke dan steveha , jawaban terbaik untuk pertanyaan ini adalah:
Untuk blok teks yang panjang, yang terbaik adalah menggunakan input('Press <ENTER> to continue')(atau raw_input('Press <ENTER> to continue')pada Python 2.x) untuk meminta pengguna, daripada penundaan waktu. Pembaca cepat tidak akan mau menunggu penundaan, pembaca lambat mungkin ingin lebih banyak waktu penundaan, seseorang mungkin terganggu saat membacanya dan ingin lebih banyak waktu, dll. Juga, jika seseorang banyak menggunakan program, ia / dia mungkin terbiasa dengan cara kerjanya dan bahkan tidak perlu membaca teks yang panjang. Hanya lebih ramah untuk membiarkan pengguna mengontrol berapa lama blok teks ditampilkan untuk dibaca.
Saya telah menggunakan metode ini sedikit, namun saya juga suka menggunakannya sebagai fungsi pause () dan saya tidak berpikir ada kebutuhan untuk keluar (). def pause (): return raw_input ("Tekan Enter untuk melanjutkan ...")
Saya pikir cara terbaik untuk menghentikan eksekusi adalah fungsi time.sleep (). jika Anda perlu menangguhkan eksekusi hanya dalam kasus-kasus tertentu, Anda cukup menerapkan pernyataan if seperti ini:
import getpass
getpass.getpass("Press Enter to Continue")
Ia menyembunyikan apa pun yang diketik pengguna, yang membantu memperjelas bahwa input tidak digunakan di sini.
Tetapi berhati-hatilah dalam platform OSX ini menampilkan kunci yang mungkin membingungkan.
Mungkin solusi terbaik adalah melakukan sesuatu yang mirip dengan modul getpass sendiri, tanpa melakukan read -spanggilan. Mungkin membuat warna fg cocok dengan bg?
Jawaban:
Tampaknya baik bagi saya (atau
raw_input()
dengan Python 2.X). Atau Anda dapat menggunakantime.sleep()
jika Anda ingin berhenti selama beberapa detik.sumber
print
untuk menampilkan blok teks yang panjang dan kemudianinput()
atau yangraw_input('Press <ENTER> to continue')
sesuai untuk versi Python Anda.input()
(atauraw_input()
pada Python 2.x) untuk meminta pengguna, daripada penundaan waktu. Pembaca cepat tidak akan mau menunggu penundaan, pembaca lambat mungkin ingin lebih banyak waktu penundaan, seseorang mungkin terganggu saat membacanya dan ingin lebih banyak waktu, dll. Juga, jika seseorang banyak menggunakan program, ia / dia mungkin terbiasa dengan cara kerjanya dan bahkan tidak perlu membaca teks yang panjang. Hanya lebih ramah untuk membiarkan pengguna mengontrol berapa lama blok teks ditampilkan untuk dibaca.Hanya untuk windows gunakan:
sumber
Saya berasumsi Anda ingin berhenti tanpa input
Menggunakan
time.sleep (dtk)
sumber
Jadi, saya menemukan ini berfungsi dengan sangat baik dalam upaya pengkodean saya. Saya hanya membuat fungsi di awal program saya,
dan sekarang saya bisa menggunakan
pause()
fungsi kapan pun saya perlu seperti seolah-olah saya sedang menulis file batch. Misalnya , dalam program seperti ini:Sekarang jelas program ini tidak memiliki tujuan dan hanya untuk tujuan contoh, tetapi Anda dapat memahami dengan tepat apa yang saya maksud.
CATATAN: Untuk Python 3, Anda harus menggunakan yang
input
bertentanganraw_input
sumber
Saya memiliki pertanyaan serupa dan saya menggunakan sinyal:
Jadi, Anda mendaftarkan pawang untuk sinyal SIGINT dan berhenti menunggu sinyal apa pun. Sekarang dari luar program Anda (misalnya dalam bash), Anda dapat menjalankan
kill -2 <python_pid>
, yang akan mengirim sinyal 2 (yaitu SIGINT) ke program python Anda. Program Anda akan memanggil penangan terdaftar Anda dan melanjutkan menjalankan.sumber
signal.pause
.Saya menggunakan yang berikut ini untuk
python
2 dan 3 untuk menghentikan sementara eksekusi kode sampai pengguna menekanENTERsumber
Seperti yang ditunjukkan oleh komentar mhawke dan steveha , jawaban terbaik untuk pertanyaan ini adalah:
sumber
Sangat sederhana:
sumber
NameError: name 'raw_input' is not defined
sumber
Saya pikir cara terbaik untuk menghentikan eksekusi adalah fungsi time.sleep (). jika Anda perlu menangguhkan eksekusi hanya dalam kasus-kasus tertentu, Anda cukup menerapkan pernyataan if seperti ini:
Anda dapat membiarkan cabang yang lain kosong.
sumber
Saya pikir saya suka soln ini.
Ia menyembunyikan apa pun yang diketik pengguna, yang membantu memperjelas bahwa input tidak digunakan di sini.
Tetapi berhati-hatilah dalam platform OSX ini menampilkan kunci yang mungkin membingungkan.
Mungkin solusi terbaik adalah melakukan sesuatu yang mirip dengan modul getpass sendiri, tanpa melakukan
read -s
panggilan. Mungkin membuat warna fg cocok dengan bg?sumber
Dengan metode ini, Anda dapat melanjutkan program hanya dengan menekan tombol apa saja yang telah Anda tentukan bahwa:
metode yang sama tetapi dengan cara lain:
Catatan: Anda dapat menginstal
keyboard
modul hanya dengan menulis ini di shell atau cmd:sumber
sumber
Untuk kompatibilitas lintas Python 2/3, Anda dapat menggunakan
input
melaluisix
perpustakaan:sumber