首頁  >  文章  >  後端開發  >  如何在Python中實現限時用戶輸入?

如何在Python中實現限時用戶輸入?

Barbara Streisand
Barbara Streisand原創
2024-11-27 01:49:11362瀏覽

How Can I Implement Time-Limited User Input in Python?

Python 中的限時用戶輸入

當使用輸入函數請求用戶輸入時,您可能希望限制用戶的時間來回應。這使您可以優雅地處理超時並提供適當的回饋。

使用限時輸入

要實現限時輸入,請考慮以下方法:

阻塞執行緒方法(Python 2/3)

import threading

timeout = 10  # In seconds
t = threading.Timer(timeout, lambda: print('Sorry, times up.'))
t.start()

prompt = "You have {} seconds to choose the correct answer...\n".format(timeout)
answer = input(prompt)
t.cancel()  # Stop the timer if the user provides a response

非阻塞執行緒方法(Python 3)

import sys
import msvcrt  # For Windows
import time  # For Unix

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():  # For Windows
            # Handle keyboard input
        else:  # For Unix
            ready, _, _ = select.select([sys.stdin], [], [], timeout)
            if ready:
                return sys.stdin.readline().rstrip('\n')

    raise TimeoutExpired()

訊號處理方法(類Unix)系統)

import signal

def alarm_handler(signum, frame):
    raise TimeoutExpired()

def input_with_timeout(prompt, timeout):
    signal.signal(signal.SIGALRM, alarm_handler)
    signal.alarm(timeout)

    try:
        return input(prompt)
    finally:
        signal.alarm(0)  # Cancel the alarm

選擇最適合您的作業系統和封鎖要求的方法。

以上是如何在Python中實現限時用戶輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn