在Python3.8中,有没有一种方法可以在一段时间后取消输入()?
我正在用Python 3.8编写一个程序。我想输入一个变量,比如变量v。如果v输入为“n”,则运行一些代码。任何其他输入都不起作用。此外,如果时间用完且v未输入任何内容,则运行“n”代码 我尝试了几个不同的计时器,它们工作正常,但我正在努力取消输入,因为它会停止我的整个程序,并且不会继续执行我想要运行的代码 以下是我所拥有的:在Python3.8中,有没有一种方法可以在一段时间后取消输入()?,python,python-3.x,input,timer,Python,Python 3.x,Input,Timer,我正在用Python 3.8编写一个程序。我想输入一个变量,比如变量v。如果v输入为“n”,则运行一些代码。任何其他输入都不起作用。此外,如果时间用完且v未输入任何内容,则运行“n”代码 我尝试了几个不同的计时器,它们工作正常,但我正在努力取消输入,因为它会停止我的整个程序,并且不会继续执行我想要运行的代码 以下是我所拥有的: def timerMethod(): timeout = 10 t = Timer(timeout, print, ['Sorry, times up']
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。如果没有应答变量的输入,计时器将结束,但程序不会继续。如果有人能在正确的轨道上帮助我如何在计时器用完时取消输入提示,我将不胜感激。您可以尝试以下方法:
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()
检查多线程
. 我希望对它的工作原理有更好的解释。用我自己的话说,一个线程开始并设置第二个线程占用的开始时间。它不运行倒计时的计时器,而是运行一个if语句,将所用时间与时间限制进行比较,从而为程序退出前运行的任何代码提供空间。这是否回答了您的问题@谢谢,我用这个线程解决了这个问题。这里的计时器工作得很好,但是需要输入程序才能继续。谢谢你的回答,虽然有一个输入。。。这是用户变量。只需在代码中使用,就可以了