在一段时间后结束python脚本

End a python script after a certain amount of time

我正在尝试制作一个简单的python游戏来训练我的技能,它就像一个带陷阱的地下城和类似的东西,这里是游戏代码的一部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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脚本,如果user_input不等于right_choice,通过替换上面代码示例中的SOME CODE,MORE CODE,该怎么做?


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)

您希望通过信号完成您想要完成的任务:https://stackoverflow.com/a/2282656/2896976

不幸的是,没有一种友好的方式来处理这个问题。 通常对于游戏,你会在每一帧都调用它,但像raw_input这样的调用就是所谓的阻塞。 也就是说,程序在完成之前无法执行任何操作(但如果用户从未说过任何内容,则无法完成)。