Cara Melaksanakan Had Masa untuk Input Pengguna dalam Python
Semasa menggunakan fungsi raw_input(), anda mungkin menghadapi situasi yang anda inginkan untuk menamatkan input selepas tempoh yang telah ditetapkan. Nasib baik, Python menyediakan beberapa penyelesaian untuk menangani keperluan ini.
Kaedah Unix Sahaja:
Cadangan @jer menggunakan fungsi signal.alarm, yang hanya tersedia pada Unix sistem. Fungsi ini menimbulkan pengecualian KeyboardInterrupt apabila tamat masa yang ditentukan dicapai. Kod berikut menunjukkan pendekatan ini:
import signal def raw_input_with_timeout(prompt, timeout): signal.alarm(timeout) try: return input(prompt) except KeyboardInterrupt: return None finally: signal.alarm(0) # Reset alarm to avoid interference
Kaedah Merentas Platform dan Khusus Windows:
Untuk penyelesaian merentas platform atau khusus Windows, pertimbangkan untuk menggunakan threading.Kelas pemasa bersama-sama dengan thread.interrupt_main. Pendekatan ini menghantar KeyboardInterrupt ke utas utama daripada benang pemasa. Kod di bawah menggambarkan kaedah ini:
import threading def raw_input_with_timeout(prompt, timeout): print(prompt, end=' ') timer = threading.Timer(timeout, thread.interrupt_main) result = None try: timer.start() result = input(prompt) except KeyboardInterrupt: pass timer.cancel() return result
Kaedah Khusus Windows (Belum Diuji):
Dalam persekitaran Windows, msvcrt boleh digunakan untuk mencapai tamat masa. Pendekatan ini melibatkan tinjauan pendapat untuk menekan kekunci dalam gelung ketat dan mengumpul input sehingga masa maksimum dicapai atau aksara baris baharu dikesan.
import msvcrt import time def raw_input_with_timeout(prompt, timeout): print(prompt, end=' ') finishat = time.time() + timeout result = [] while True: if msvcrt.kbhit(): result.append(msvcrt.getche()) if result[-1] == '\r': return ''.join(result) time.sleep(0.1) else: if time.time() > finishat: return None
Gelagat Boleh Disesuaikan:
Sekiranya nilai pulangan tamat masa selain daripada Tiada dikehendaki, cuma gantikan penyataan Tiada pulangan dalam coretan kod di atas. Selain itu, melaraskan penamat selepas setiap ketukan kekunci boleh melaraskan tamat masa berdasarkan rentak input.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Had Masa untuk Input Pengguna dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!