当计时器运行的功能下降时?

汤姆

我对编程真的很陌生,我正在尝试为幼儿创建数学测验。他们必须在60秒内回答尽可能多的问题。我有一个计时器和一个问题发生器

但是问题是,我无法让它们同时运行,例如,程序等待1秒钟,问一个问题,等到用户回答后,再使用计时器等。我想要计时器在回答问题时继续前进,不要停下来!

这是我的计时器:

timer = 5
time.sleep(1)
timer -= 1

通过定义变量来产生我的问题(我将其缩短为加法运算):

def questions():
    first_number = random.randint(1, 50)
    second_number = random.randint(1, 50)
    print("What is", first_number, "+", second_number,"?")
    answer = int(input("Answer: "))
    if answer == first_number + second_number:
        print("Correct!")
        addition_score += 1
    else:
        print("Wrong!")
阿明·里戈(Armin Rigo)

中断一个input()让我们首先关注一个简​​单的任务:您想questions()重复调用,直到总经过时间为60秒或更长时间。您可以通过使用测量时间来做到这一点,该时间time.time()返回秒数,因为...有一些随机的“时间零” ---没关系。码:

start_time = time.time()                 # "now" at the start
while time.time() < start_time + 60:     # "not 60 seconds later"
    questions()

诀窍是不使用time.sleep():从技术上讲,该input()调用已经是“阻塞”,并且您只能同时运行一个阻塞功能(除非您引入线程或多个进程,这在这里是完全过分的)。

即使正确回答了最后一个问题,即使在60秒钟后回答了该问题,也将算作+1。可以通过questions()返回True或False来更改此逻辑,并且score += 1仅在返回True还有剩余时间时才执行零件

如果您想在60秒后真正打断一下,那会有些困难。尝试例如signal.alarm(60)(不适用于Windows)。在给定的秒数后,它将发送信号“闹钟”。默认情况下,它会终止进程。如果您想抓住它并做其他事情,请尝试另外做:signal.signal(signal.SIGALRM, signal.default_int_handler)它会在60秒后模拟Ctrl-C,您可以使用以下命令进行捕获:

try:
    while True:   # infinite loop, until interrupted
        questions()
except KeyboardInterrupt:
    pass          # interrupted, now we're out of the loop

time.time()此版本不再需要。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用计时器获取功能的运行时

来自分类Dev

设置功能的计时器

来自分类Dev

任意功能的计时器

来自分类Dev

Javascript计时器功能

来自分类Dev

任意功能的计时器

来自分类Dev

在运行计时器时增加时间延迟

来自分类Dev

重新加载页面时保持计时器(setInterval)运行

来自分类Dev

应用关闭时在“后台”运行计时器

来自分类Dev

在 Human-CPU 游戏期间安排两个计时器任务时,多个计时器会运行

来自分类Dev

计时器实现超时功能

来自分类Dev

如何创建计时器功能?

来自分类Dev

计时器功能的错误处理

来自分类Dev

计时器实现超时功能

来自分类Dev

javascript setTimeout计时器步进功能

来自分类Dev

UWP 中相机功能的计时器

来自分类Dev

Android在后台运行计时器

来自分类Dev

多个倒数计时器依次运行

来自分类Dev

Javascript计时器向后运行

来自分类Dev

多个倒数计时器依次运行

来自分类Dev

JS-计时器运行缓慢

来自分类Dev

计时器无法正常运行(Java)

来自分类Dev

在JavaScript上运行计时器

来自分类Dev

在后台运行计时器

来自分类Dev

除非逐步执行,否则会阻止其自身功能运行的计时器

来自分类Dev

在MAC上本地运行计时器触发了Azure功能(在docker内部)

来自分类Dev

如何为CSS动画计时功能设置计时器?

来自分类Dev

多次停止和启动时,计时器功能无法正常工作

来自分类Dev

计时器停止时无法恢复

来自分类Dev

暂停时过期的Systemd计时器