在一定时间后结束python脚本
我正在尝试制作一个简单的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
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()函数合并。