我正在尝试创建一个函数来结束我的游戏,消息倒计时直到它结束,我不得不在我的文本冒险游戏中重复这段代码,所以我决定做一个函数它是为了整洁和高效。但我无法弄清楚如何定义和调用这样的函数。这是我试图执行的代码:
print "That\'s a real shame..."
time.sleep(1)
print 'Exiting program in 5 seconds:'
time.sleep(1)
print '5'
time.sleep(1)
print '4'
time.sleep(1)
print '3'
time.sleep(1)
print '2'
time.sleep(1)
print '1'
time.sleep(1)
sys.exit('Exiting Game...')
break
所以我定义了这样的函数:
def exit():
print "That\'s a real shame..."
time.sleep(1)
print 'Exiting program in 5 seconds:'
time.sleep(1)
print '5'
time.sleep(1)
print '4'
time.sleep(1)
print '3'
time.sleep(1)
print '2'
time.sleep(1)
print '1'
time.sleep(1)
sys.exit('Exiting Game...')
break
我正在调用这样的函数:
elif ready == 'n':
exit
我做错了什么?
答案 0 :(得分:7)
您可以通过键入exit()
来调用该函数。我修改了倒计时代码并将其转换为我在exit()
内调用的函数,以演示如何从代码段中调用一个函数。
def exit():
print "That\'s a real shame..."
time.sleep(1)
print 'Exiting program in 5 seconds:'
time.sleep(1)
count_down(5) # Call Countdown clock
print 'Exiting Game...'
sys.exit()
def count_down(number):
for i in reversed(range(number)):
print i+1
time.sleep(1)
exit() # <-- This how you call exit, you were missing the parentheses at the end.
输出:
That's a real shame...
Exiting program in 5 seconds:
5
4
3
2
1
Exiting Game...
修改 添加了更深入的解释。
第一行def count_down
是一个函数,只需一个parameter并有一个目的,可以处理倒计时。
def count_down(number):
第二行包含我们称之为for loop的内容。此代码的目的是循环对象。从4
开始,然后3,2,1
等。同一行中的变量i
将在每次循环通过数字时更改,并且只能在循环内访问。第一次执行打印时,它将是5,然后是下一次4,依此类推。
for i in reversed(range(number)):
在此功能中,我们还使用了两个额外的关键字和一个参数reversed
,range
和参数number
。
reversed(range(number))
range用于创建数字列表,例如[0, 1, 2, 3, 4]
,for语句将从0
开始循环,然后它将一直采用下一个数字,直到它到达最后一个数字4
。我将解释为什么它从零开始,只有四个,而不是我的答案结束时的五个。
reversed用于反转我们使用范围创建的列表。我们希望从4
开始,而不是0
。
在reversed
=&gt;之前[0,1,2,3,4]
reversed]
=&gt;之后[4,3,2,1,0]
number
是一个参数。参数是我们通过在括号exit()
中包含值而从()
函数执行函数时提供的值。在这种情况下,我们指定了5,所以我们创建的列表
range
的范围为0 - 4(0,1,2,3,4 =总共五个数字)。如果您在括号中指定了10,它将创建一个从0开始一直到9的列表。并且您的代码将从10减少到1,而不是从5减少到1。
当Python开始处理for loop
时,它将执行内部代码,从print
开始,然后是sleep
,并继续为创建的列表中的每个数字执行此操作按range
。由于我们在这种情况下指定了五个,因此它将执行代码共五次。
当Python在for loop
内执行代码时,它将首先调用print函数。因为for循环将从4
开始,而不是5
,所以我们需要做一些基本的算术,并将我们循环的每个项目的值增加一个。我们在变量+ 1
之后输入i
来执行此操作。
它从4开始而不是5开始的原因是因为编程列表以数字0
开头,而不是1
。有一个更为技术性的解释,说明为什么lists以0开头,而不是1(或4,在这种情况下不是5,因为我们颠倒了列表)here
答案 1 :(得分:4)
您应该将其称为exit()
,而不是exit
。
答案 2 :(得分:0)
很简单。使用保留消息的tuple
和定时器延迟,这样您甚至可以控制每条消息的延迟时间。
import time, sys
messages = [
("That's a shame", 1),
("Exiting program in 5 seconds", 1),
(None, 5)
]
for k,v in messages:
if k:
print(k)
time.sleep(v)
else:
# start countdown timer
while v:
print v
time.sleep(1)
v -= 1
sys.exit()
答案 3 :(得分:-1)
执行此代码的好方法是:
def exit():
timer= 5
print "That\'s a real shame..."
time.sleep(1)
print 'Exiting program in 5 seconds:'
for i in range (5):
time.sleep(1)
print timer
timer = timer - 1
sys.exit('Exiting Game...')
##You call the function like this
exit()