Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich zeitlich begrenzte Benutzereingaben in der Programmierung umsetzen?
Eingabe mit Zeitbeschränkung
Beim Programmieren kann es von Vorteil sein, die Benutzereingaben zeitlich zu begrenzen. Beispielsweise möchten Sie den Benutzern möglicherweise eine Frage stellen und ihnen eine begrenzte Antwortzeit einräumen, z. B.:
print('some scenario') prompt = input("You have 10 seconds to choose the correct answer...\n")
Wenn der Benutzer das Zeitlimit überschreitet, können Sie eine Nachricht wie diese anzeigen:
print('Sorry, times up.')
Lösungen für zeitlich begrenzte Eingaben
Berücksichtigen Sie diese, um zeitlich begrenzte Eingaben zu implementieren Optionen:
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
Durch die Implementierung dieser Methoden können Sie Zeitbeschränkungen effektiv anwenden Benutzereingaben, Verbesserung der Benutzererfahrung und Steuerung des Programmflusses.
Das obige ist der detaillierte Inhalt vonWie kann ich zeitlich begrenzte Benutzereingaben in der Programmierung umsetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!