我想制作一个计时器,这样在计时器结束时,计时器会改变' timerdone'的值。在我的计时器结束时,它不会更改值。
示例代码:
from time import sleep
timerdone = False
def timer():
print "3"
sleep(1)
print "2"
sleep(1)
print "1"
sleep(1)
timerdone = True
timer()
if timerdone == True:
print "BOOM!"
else:
print "Something wrong."
当我在终端中运行它时,它会打印出“错误。”#34;而不是" BOOM"。我知道我可以让它打印出来#BOOM!"在计时器结束时,这只是一种更简单的方式来显示我的问题。
答案 0 :(得分:2)
您需要返回该值。所以:
from time import sleep
timerdone = False
def timer():
print "3"
sleep(1)
print "2"
sleep(1)
print "1"
sleep(1)
return True
timerdone = timer()
if timerdone == True:
print "BOOM!"
else:
print "Something wrong."
全局变量也可以工作,但返回值通常是更好的做法。
答案 1 :(得分:2)
您没有返回timerdone
,所以您所做的只是在函数中创建一个新变量名timedone
并将其设置为false。你应该改回来。
from time import sleep
def timer():
print "3"
sleep(1)
print "2"
sleep(1)
print "1"
sleep(1)
return True
if timer():
print "BOOM!"
else:
print "Something wrong."
答案 2 :(得分:1)
您需要制作变量global
。
def timer():
global timerdone
print "3"
sleep(1)
print "2"
sleep(1)
print "1"
sleep(1)
timerdone = True
如果您不使用关键字global
,则变量timerdone
会引用函数timer()
的本地范围。
请注意,您可以在不指定关键字的情况下访问并读取全局变量,但如果要更改其值,则需要global
。