有没有一种方法可以在一定时间后取消Python 3.8中的input()



我正在用Python 3.8编写一个程序。我想做一个输入,比如说变量v;n、 ";然后运行一些代码。任何其他输入都不会起任何作用。此外,如果时间用完并且没有为v输入任何内容,则";n〃;运行代码。

我试过几个不同的定时器,它们工作正常,但我很难取消输入,因为它会停止我的整个程序,不会继续执行我想要运行的代码。

这是我的:

def timerMethod():
timeout = 10
t = Timer(timeout, print, ['Sorry, times up'])
t.start()
prompt = "You have %d seconds to choose: are you feeling ok? y/n: n" % timeout
answer = input(prompt)
if (answer == "n"):
feelingBad = True
t.cancel()

我遇到的两个问题是1。feelingBad(全局变量(永远不会成为现实。我觉得这是一个基本的Py原则,我在这里忘记了,我可以改变这里的代码编写方式,但如果你想指出我的错误,请这样做。主要问题2。如果没有答案变量的输入,计时器将结束,但程序不会继续。如果有人能帮助我在定时器用完时如何取消输入提示,我将不胜感激。

检查多线程在这里我希望能对它的工作原理有一个更好的解释。用我自己的话说,一个线程启动并设置第二个线程占用的启动时间。它不是一个倒计时的计时器,而是运行一个if语句,将所用时间与时间限制进行比较,这为程序退出前运行任何代码提供了空间。

你可以试试这个:

import time
from threading import Thread
user = None
def timeout():
cpt = 0
while user == None:
time.sleep(1); cpt += 1
if user != None:
return
if cpt == 10:
break
print("Pass")
Thread(target = timeout).start()
user = input()

最新更新