Python 带时间限制/倒计时的输入

Python 带时间限制/倒计时的输入,python,multithreading,input,Python,Multithreading,Input,我对Python非常陌生,我想为我的学生编写一个(而不是计算机)语言培训师。就像计时器在后台运行一样,学生必须快速输入单词以减慢/恢复倒计时-否则倒计时为零并显示一些“游戏结束”消息。(就像特务必须在计时器接近零的时候拆除炸弹一样。) 当然,有很多关于线程的解释,听起来似乎是正确的方法,但到目前为止,我还没有发现任何将计时器与(限时)原始输入相结合的情况。各位专业人士能给我一个指向我忽略的教程/讨论的指针吗?你不必通过线程来完成,你可以在一个线程中以特定的频率运行“逻辑”,每次迭代都通过时间增量

我对Python非常陌生,我想为我的学生编写一个(而不是计算机)语言培训师。就像计时器在后台运行一样,学生必须快速输入单词以减慢/恢复倒计时-否则倒计时为零并显示一些“游戏结束”消息。(就像特务必须在计时器接近零的时候拆除炸弹一样。)


当然,有很多关于线程的解释,听起来似乎是正确的方法,但到目前为止,我还没有发现任何将计时器与(限时)原始输入相结合的情况。各位专业人士能给我一个指向我忽略的教程/讨论的指针吗?

你不必通过线程来完成,你可以在一个线程中以特定的频率运行“逻辑”,每次迭代都通过时间增量方法重新计算倒计时。这是多少视频游戏生产

假设您以60hz的频率运行此伪代码方法:

delta = timenow-timelast;
countdown -= delta;
if(input)
    processInputHere;

您应该能够将伪代码转换为python代码以使其正常工作

多亏了!最好的圣诞礼物!哈哈哈,不客气,如果您满意,请接受并投票。N00b回答:当然,我会投票支持您的答案-一旦我有足够的“声誉”…有threading.Timer和sys.exit可以简化您的代码。@Sebastian+1,谢谢。我想向他展示线程是如何工作的,因为在他的项目中,似乎他需要的不仅仅是简单的计时器
import threading
import time
import os

def ask():
    """
    Simple function where you ask him his name, if he answers
    you print message and exit
    """
    name = raw_input("Tell me your name, you have 5 seconds: ")
    exit_message = "Wohoho you did it..Your name is %s" % name
    exit(exit_message)

def exit(msg):
    """
    Exit function, prints something and then exits using OS
    Please note you cannot use sys.exit when threading..
    You need to use os._exit instead
    """
    print(msg)
    os._exit(1)

def close_if_time_pass(seconds):
    """
    Threading function, after N seconds print something and exit program
    """
    time.sleep(seconds)
    exit("Time passed, I still don't know your name..")

def main():
    # define close_if_time_pass as a threading function, 5 as an argument
    t = threading.Thread(target=close_if_time_pass,args=(5,))
    # start threading
    t.start()
    # ask him his name
    ask()

if __name__ == "__main__":
    main()