Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅当输入值在5秒内输入时,接受输入值的代码是什么?_Python_Time - Fatal编程技术网

Python 仅当输入值在5秒内输入时,接受输入值的代码是什么?

Python 仅当输入值在5秒内输入时,接受输入值的代码是什么?,python,time,Python,Time,我需要帮助来编写一个代码,只有当用户在请求输入的5秒内输入时才接受输入,否则会打印一条消息说“太晚”并结束程序 显然,我用来解决这个问题的算法是不对的。除非用户输入给定的代码,否则时间不会增加 # code for accepting input only if entered within 5 seconds print("Enter value: ") sec = 0 for sec in range(0, 6): while sec==5: print("t

我需要帮助来编写一个代码,只有当用户在请求输入的5秒内输入时才接受输入,否则会打印一条消息说“太晚”并结束程序

显然,我用来解决这个问题的算法是不对的。除非用户输入给定的代码,否则时间不会增加

# code for accepting input only if entered within 5 seconds

print("Enter value: ")

sec = 0

for sec in range(0, 6):

    while sec==5:
        print("too late")
    time.sleep(1)
    sec += 1
    a=input()

作为一种简单的方法,您可以这样做:

当输入停止执行时,在输入答案时计算经过的时间,并与限制进行比较(此处默认为5秒)。
如果在时间限制内,则返回答案供进一步处理,否则,
too late
将被打印,并且
None
将以静默方式返回

import time

def timed_acceptance(limit=5):
    start = time.time()
    a = input('you have 5 seconds:')
    end = time.time()
    if end - start < limit:
        return a
    else:
        print('too late')

timed_acceptance()
导入时间
def定时_验收(限值=5):
开始=时间。时间()
a=输入('您有5秒:')
end=time.time()
如果结束-开始<限制:
归还
其他:
打印(‘太晚了’)
定时接收

问题在于
输入
阻塞,直到有输入要读取。您所寻找的是所谓的非阻塞IO,如果没有任何内容可立即读取,则不会返回任何内容。这里讨论了如何在python中解决这个问题:

可能的重复/只是因为我没有看到它,您需要将
打印(“输入值”)
更改为某种
输入(有一些,这取决于您使用的python版本)。例如,在Python3中,通常执行
value=input(“输入值”)
。请小心,因为这会将您输入的内容转换为字符串。Downvoter,请解释一下?OP提供了一个最小的可重复性示例和对问题的合理描述。是的,提供的代码是完全错误的,但这并不是投反对票的理由。此代码等待用户提供输入,然后在end start>5时打印“太迟”。我想要的是程序在5秒后显示一条消息“to late”,并结束,从而防止用户进一步输入任何输入。是的,输入答案会触发对所用时间的计算,并决定答案的有效性。