首页 >后端开发 >Python教程 >如何在Python中实现限时用户输入?

如何在Python中实现限时用户输入?

Barbara Streisand
Barbara Streisand原创
2024-11-27 01:49:11385浏览

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