有时间限制的数学测验(同步函数)-高级python

有时间限制的数学测验(同步函数)-高级python,python,math,timer,simultaneous,Python,Math,Timer,Simultaneous,所以我想运行两个程序,一个计时器和一个数学问题。但输入似乎总是停止计时器功能,甚至根本不运行。有什么办法可以绕过这个问题吗? 我将保持示例的简单性 import time start_time = time.time() timer=0 correct = answer answer = input("9 + 9 = ") #technically a math question here #so here until i enter the input prevents computer

所以我想运行两个程序,一个计时器和一个数学问题。但输入似乎总是停止计时器功能,甚至根本不运行。有什么办法可以绕过这个问题吗? 我将保持示例的简单性

import time

start_time = time.time()
timer=0
correct = answer
answer = input("9 + 9 = ") 
#technically a math question here
#so here until i enter the input prevents computer reading the code
while True:
    timer = time.time() - start_time
    if timer > 3:
#3 seconds is the limit
    print('Wrong!')
quit()
所以我想让玩家在3秒内回答这个问题

3秒钟后,游戏将打印错误并退出

如果玩家在三秒内回答,计时器将被“终止”或停止,然后触发“错误”并退出


希望您理解,并非常感谢您在Windows上提供的帮助。您可以使用模块的
kbhit
getch
功能(我对其进行了一点现代化):

我不确定您在其他操作系统(research、tty等)上到底要做什么

另一种可能是模块也有一个getch函数,您可以将其设置为
nodelay(1)
(非阻塞),但对于Windows,您首先必须从下载诅咒


在Windows上,您可以使用模块的
kbhit
getch
函数(我对此进行了一点现代化):

我不确定您在其他操作系统(research、tty等)上到底要做什么

另一种可能是模块也有一个getch函数,您可以将其设置为
nodelay(1)
(非阻塞),但对于Windows,您首先必须从下载诅咒

使用
time.time()
,它返回历元时间(即自1970年1月1日UNIX时间以来的秒数)。您可以将其与开始时间进行比较,以获得秒数:

start = time.time()
while time.time() - start < 60:
    # stuff
这定义了一个引发异常并在超时发生时调用的函数。现在,您可以将while循环放入try-catch块并设置计时器:

signal.alarm.timeout(60)
try:
    while lives > 0
        # stuff
except:
    # print score
使用
time.time()
,它返回历元时间(即自1970年1月1日UNIX时间以来的秒数)。您可以将其与开始时间进行比较,以获得秒数:

start = time.time()
while time.time() - start < 60:
    # stuff
这定义了一个引发异常并在超时发生时调用的函数。现在,您可以将while循环放入try-catch块并设置计时器:

signal.alarm.timeout(60)
try:
    while lives > 0
        # stuff
except:
    # print score

你做过任何研究吗?例如:我不是python程序员,但这似乎需要并发/多线程。你使用Windows、Linux或其他操作系统吗?你做过任何研究吗?例如:我不是python程序员,但这似乎需要并发/多线程。您使用Windows、Linux或其他操作系统吗?没有输入,即使我在其中输入了名称,代码也会忽略输入并继续运行。您是从命令行还是IDE(如IDLE或PyCharm)运行它?你在用Windows吗?您必须使用Windows命令行。@Yo LEE告诉我它是否有效。稍后我将添加一个使用诅咒的示例。我刚刚添加了诅咒示例。我希望您能理解它(更好地阅读文档)。我也没有太多的经验,所以不能保证;)。你也可以使用像tkinter或pygame库这样的GUI框架,但你也需要花一点时间来适应它们。没有输入,即使我在其中输入了一个名称,代码也会忽略输入并继续运行。你是从命令行还是像IDLE或PyCharm这样的IDE运行它?你在用Windows吗?您必须使用Windows命令行。@Yo LEE告诉我它是否有效。稍后我将添加一个使用诅咒的示例。我刚刚添加了诅咒示例。我希望您能理解它(更好地阅读文档)。我也没有太多的经验,所以不能保证;)。您也可以使用诸如tkinter或pygame库之类的GUI框架,但您也需要花一点时间来适应它们。
signal.alarm.timeout(60)
try:
    while lives > 0
        # stuff
except:
    # print score