Input dengan Sekatan Masa
Dalam pengaturcaraan, boleh memberi manfaat untuk mengenakan had masa pada input pengguna. Sebagai contoh, anda mungkin ingin bertanya kepada pengguna soalan dan memberikan mereka tempoh terhad untuk membalas, seperti:
print('some scenario') prompt = input("You have 10 seconds to choose the correct answer...\n")
Jika pengguna melebihi had masa, anda boleh memaparkan mesej seperti:
print('Sorry, times up.')
Penyelesaian untuk Input Terhad Masa
Untuk melaksanakan input terhad masa, pertimbangkan pilihan ini:
from threading import Timer timeout = 10 t = Timer(timeout, print, ['Sorry, times up']) t.start() prompt = "You have %d seconds to choose the correct answer...\n" % timeout answer = input(prompt) t.cancel()
import msvcrt import time class TimeoutExpired(Exception): pass def input_with_timeout(prompt, timeout, timer=time.monotonic): sys.stdout.write(prompt) sys.stdout.flush() endtime = timer() + timeout result = [] while timer() < endtime: if msvcrt.kbhit(): result.append(msvcrt.getwche()) # XXX can it block on multibyte characters? if result[-1] == '\r': return ''.join(result[:-1]) time.sleep(0.04) # just to yield to other processes/threads raise TimeoutExpired
import select import sys def input_with_timeout(prompt, timeout): sys.stdout.write(prompt) sys.stdout.flush() ready, _, _ = select.select([sys.stdin], [],[], timeout) if ready: return sys.stdin.readline().rstrip('\n') # expect stdin to be line-buffered raise TimeoutExpired
import signal def alarm_handler(signum, frame): raise TimeoutExpired def input_with_timeout(prompt, timeout): # set signal handler signal.signal(signal.SIGALRM, alarm_handler) signal.alarm(timeout) # produce SIGALRM in `timeout` seconds try: return input(prompt) finally: signal.alarm(0) # cancel alarm
Dengan melaksanakan kaedah ini, anda boleh menggunakan sekatan masa dengan berkesan pada input pengguna, meningkatkan pengalaman pengguna dan mengawal aliran program anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Input Pengguna Terhad Masa dalam Pengaturcaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!