在一定时间后结束python脚本

在一定时间后结束python脚本,python,python-2.7,Python,Python 2.7,我正在尝试制作一个简单的python游戏来训练我的技能,它就像是一个有陷阱的地牢之类的东西,下面是游戏代码的一部分: from sys import exit def trap(): print "You've fallen into a trap,you have 10 seconds to type the word \"Get me out\"" user_input = raw_input("> ") right_choice = "Get me ou

我正在尝试制作一个简单的python游戏来训练我的技能,它就像是一个有陷阱的地牢之类的东西,下面是游戏代码的一部分:

from sys import exit

def trap():
    print "You've fallen into a trap,you have 10 seconds to type the word \"Get me out\""

    user_input = raw_input("> ")

    right_choice = "Get me out"

    if *SOME CODE*:
        *MORE CODE*
    else:
        die("you died,you were too slow")

def die(why):
    print why , "Try again"
    exit(0)

如你所见,如果用户输入不等于正确选择,我想在10秒后结束python脚本,方法是替换一些代码,上面代码示例中的更多代码,如何做到这一点?

你希望通过信号完成的工作:


不幸的是,没有一个真正友好的方法来处理这个问题。通常情况下,对于一个游戏,你会每帧调用一次,但是像
raw\u input
这样的调用就是所谓的阻塞。也就是说,程序在完成之前不能做任何事情(但如果用户从未说过任何事情,它就不会完成)。

您希望完成的事情可以通过信号完成:


不幸的是,没有一个真正友好的方法来处理这个问题。通常情况下,对于一个游戏,你会每帧调用一次,但是像
raw\u input
这样的调用就是所谓的阻塞。也就是说,程序在完成之前不能做任何事情(但如果用户从未说过任何事情,它就不会完成)。

试试这个。它使用
信号
在打印语句后10秒内发回信号。如果您希望它位于第一次输入之后,请移动信号调用

import signal
from sys import exit

def trap():
    print "You've fallen into a trap,you have 10 seconds to type the word \"Get me out\""
    signal.signal(signal.SIGALRM, die)
    signal.alarm(10)

    user_input = raw_input("> ")
    right_choice = "Get me out"

    if *SOME CODE*:
        *MORE CODE*
        signal.alarm(0)

def die(signum, frame):
    print "Try again"
    signal.alarm(0)
    exit(0)

试试这个。它使用
信号
在打印语句后10秒内发回信号。如果您希望它位于第一次输入之后,请移动信号调用

import signal
from sys import exit

def trap():
    print "You've fallen into a trap,you have 10 seconds to type the word \"Get me out\""
    signal.signal(signal.SIGALRM, die)
    signal.alarm(10)

    user_input = raw_input("> ")
    right_choice = "Get me out"

    if *SOME CODE*:
        *MORE CODE*
        signal.alarm(0)

def die(signum, frame):
    print "Try again"
    signal.alarm(0)
    exit(0)

raw_input
将导致系统等待您输入内容后再执行更多代码。你可以检查他们输入某物后的时间,看看是否超过10秒,然后告诉他们他们死了,但这意味着输入将永远显示,直到他们输入某物为止。如果您对此不满意,那么您必须启动一些并行进程,这可能会杀死您的输入线程。可能的重复-创建一个线程计时器,然后在输入完成后检查计时器
原始输入将导致系统等待您输入某个内容,然后再执行任何代码。你可以检查他们输入某物后的时间,看看是否超过10秒,然后告诉他们他们死了,但这意味着输入将永远显示,直到他们输入某物为止。如果您对此不满意,那么您必须启动一些并行进程,这些进程可能会杀死您的输入线程。可能的重复项-创建一个线程计时器,然后在输入完成后检查计时器。实际上,这一个对我来说很好,但它对python来说是新的,因此我无法找到将其与我的trap()函数合并的方法。实际上,这一个对我来说很好,但我对python是新手,所以我找不到方法将它与我的trap()函数合并。