在Python中设置定时器

2024-05-13 11:50:55 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,伙计们,我正在用python编写一个程序。这是一个计算程序,它给你两个从2到10的随机数,然后问你2*4是多少。在

如果你的答案是正确的,那就给你一个分数。现在,我希望程序让用户计算20秒,当20秒结束时,它会显示你有多少分。在

到目前为止我的代码->

__author__ = 'Majky'
import random
import time

a = random.randint(2, 10)
b = random.randint(2, 10)
print("How much is", a, "times", b)
t = 0

odg = int(input("Answer ?"))
sec = 0

while sec < 20:

if odg == a * b:
print("Correct")
t = +1
print("Incorrect")

print("Your points are", t)

Tags: 答案代码用户importgt程序randomsec
3条回答

您将要使用threading,并打开一个并行线程来计算该时间(可能通过使用时间。睡觉())和return一旦完成,一旦返回,主线程将停止执行并返回结果。
在主程序中使用sleep()只会暂停执行一段时间,据我所知,这不是您想要的。您希望用户能够在计时器运行时与程序交互。这就是使用线程模块中的线程所允许的。在

下面是一个使用线程的快速示例(如果需要任何特定的东西,请调整它):

import random
import time

def main():
  thread_stop = threading.Event()
  thread = threading.Thread(target=user_thread,  args=(2, thread_stop))

  time.sleep(20)

  thread_stop.set()


def user_thread(arg1, stop_event):
  t = 0
  while(not stop_event.is_set()):
      a = random.randint(2, 10)
      b = random.randint(2, 10)
      print("How much is", a, "times", b)

      odg = int(input("Answer ?"))

      if odg == a * b:
        print("Correct")
        t += 1
      else:
        print("Incorrect")

  print("Your points are", t)

main()


这里还有一个例子,如果20秒时间到了,信号会在回答过程中停止用户并对结果进行计数。这个例子使用signals,它本身就是一个有趣的模块来控制执行流,如果有机会,您应该检查它的文档。
我还意识到您的代码中还有一个错误,我忽略了这一点,现在在两个示例中都已更正了,当您要增加“t”时,请使用“t+=1”,因为“t=+1”是不正确的,所以最后一个表达式每次都只是给t赋值“正”一个,所以不会增加。干杯!在

^{pr2}$

另外,别忘了添加到健全性检查中,这样无效的用户输入不会破坏代码。我把这个留给你;)

您可以使用time.time()执行类似的操作。在

import time
...
start = time.time()
answer = raw_input('enter solution')
finish = time.time()
if finish - start > 20:
    #failure condition
else:
    #success condition

您可以使用time.sleep(20)函数等待20秒。在

此函数在给定的秒数内暂停执行。参数可以是浮点数,以指示更精确的睡眠时间。在

实际的暂停时间可能比请求的时间短,因为任何捕获到的信号都将在执行该信号的捕获例程之后终止sleep()。另外,由于系统中其他活动的调度,暂停时间可能比任意数量的请求长。在

相关问题 更多 >