def start():
number = 0
prompt = raw_input("> ")
if prompt == "1":
number += 1
print number
start()
else:
start()
start()
我的输出:
Enter Number: 1
1
Enter Number: 1
1
Enter Number: 1
1
我之前使用+=
时遇到了这个问题,如果我尝试number = number + 1
,就会发生同样的事情。如何才能使号码实际添加?
我猜测在添加号码后返回start()
时,它会在number = 0
行重置。我怎么能阻止这个?
答案 0 :(得分:2)
您递归调用start()
。在每个连续调用中,您在名称空间中使用值number
创建变量0
。问题是您每次都要添加一个新变量,而不是一次设置为number
的初始值0
。
您可以使用已定义一次的全局变量来解决此问题。像这样:
number = 0
def start():
prompt = raw_input("> ")
if prompt == "1":
global number
number += 1
print number
start()
start()
然而,全局变量很糟糕,这里真的不需要递归。为什么不使用以下内容?
number = 0
while True:
prompt = raw_input("> ")
if prompt == "1":
number += 1
print number