시간 제한이 있는 입력
프로그래밍에서는 사용자 입력에 시간 제한을 두는 것이 도움이 될 수 있습니다. 예를 들어, 사용자에게 질문을 하고 다음과 같이 제한된 응답 시간을 제공할 수 있습니다.
print('some scenario') prompt = input("You have 10 seconds to choose the correct answer...\n")
사용자가 시간 제한을 초과하면 다음과 같은 메시지를 표시할 수 있습니다.
print('Sorry, times up.')
시간 제한 입력을 위한 솔루션
시간 제한 입력을 구현하려면, 다음 옵션을 고려하세요.
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
이러한 방법을 구현하면 사용자 입력에 시간 제한을 효과적으로 적용하여 사용자 경험을 향상하고 프로그램 흐름을 제어할 수 있습니다.
위 내용은 프로그래밍에서 시간 제한이 있는 사용자 입력을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!