def test():
boo = True
enter = int(raw_input("Enter something: "))
if enter > 0:
boo = False
print "Did it work?!"
else:
print "Still working..."
while boo == True:
test()
test()
因此,这部分代码似乎仅在首先尝试满足if语句的第一部分的情况下才起作用。
也就是如果您输入-1,则1会继续遍历该函数。我究竟做错了什么?
最佳答案
boo
是局部变量。每次递归调用test()
时,该递归调用都会获得一个新的局部变量boo
,该局部变量与调用它的所有父函数无关。因此,在函数开始时将其设置为True
。
您的通话如下所示:test()
,boo = True
,enter
= 1,所以while boo == True
为true:test()
,boo = True
,enter
= -1,所以while boo == True
为false,返回
在此级别上,boo == True
仍然为true,因此我们再次调用test()
。test()
,boo = True
,enter
= -1,所以while boo == True
为false,返回
等等。
您要返回boo
:
def test():
boo = True
enter = int(raw_input("Enter something: "))
if enter > 0:
boo = False
print "Did it work?!"
else:
print "Still working..."
while boo:
boo = test()
return boo
现在,当
test()
返回时,将调用函数中的boo
设置为False
。请注意,
== True
是多余的,只需在boo
中测试while boo
本身即可。使用递归进行用户输入确实不是一个好主意。只需使用
while
循环:while True:
enter = int(raw_input("Enter something: "))
if enter < 0:
print "Did it work?!"
break
print "Still working..."
关于python - boolean 语句和python中的if语句的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24869248/