Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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制作计时器_Python_Input_Timer_Countdown - Fatal编程技术网

在录制输入时使用python制作计时器

在录制输入时使用python制作计时器,python,input,timer,countdown,Python,Input,Timer,Countdown,我正在尝试创建一个程序,它以类似于游戏节目倒计时的格式运行 我找到了多种创建计时器的方法,最成功的方法是使用time.sleep命令和while循环 但是,用户需要能够在计时器运行时输入一个单词,否则用户可能需要在计时器停止后思考单词的时间。一旦计时器停止,用户键入的任何内容都应被视为他们的文字。我还没有找到任何解决方案,因为python是按顺序运行的,所以很难同时有一个计时器和一个输入。这对我以前很有效。。。使用time.time()。如果这不是你想要的,也许可以查看perf_counter(

我正在尝试创建一个程序,它以类似于游戏节目倒计时的格式运行

我找到了多种创建计时器的方法,最成功的方法是使用
time.sleep
命令和
while
循环


但是,用户需要能够在计时器运行时输入一个单词,否则用户可能需要在计时器停止后思考单词的时间。一旦计时器停止,用户键入的任何内容都应被视为他们的文字。我还没有找到任何解决方案,因为python是按顺序运行的,所以很难同时有一个计时器和一个输入。

这对我以前很有效。。。使用time.time()。如果这不是你想要的,也许可以查看perf_counter()

导入msvcrt
导入时间
def倒计时():
p=3.00
报警=时间。时间()+p
text=[]
尽管如此:
n=时间。时间()
如果msvcrt.kbhit():
text.append(msvcrt.getche())
如果n<报警:
打印(圆形(报警-n))
其他:
打印(“时间到了!”)
打破
倒计时

我认为您需要使用线程可能有用线程建议中可能存在的问题是,您不能轻易终止“watches The clock”线程中的“waiting for input”(等待输入)线程。@Kevin我链接的副本说明了如何做到这一点,它正试图解决类似的问题。您是否正在尝试编写控制台应用程序,或者GUI?好的,但是在运行时,他如何同时使用
raw\u input
input
从用户那里获得响应?while循环中的任何内容都应该执行,直到时间用完。因此,我将在while循环中添加输入功能,可能在if ninput将被阻止,并且在用户输入一些文本并按Enter键之前,不会执行其他代码。所以他们可以在按下enter键之前等待一百万秒,而你的脚本在那一百万秒之后才会打印“时间到了”。啊,你是对的。相反,也许他可以添加一个if语句,看看是否有一个按键正在等待使用msvcrt.kbhit()读入。Kevin我编辑了代码来添加它,你看这是否有意义?
import msvcrt
import time

def Countdown():
    p = 3.00
    alarm = time.time() + p
    text = []
    while True:
        n = time.time()
        if msvcrt.kbhit():
            text.append(msvcrt.getche())    
        if n < alarm:
            print(round(alarm - n))
        else:
            print("Time's up!")
            break

Countdown()