试图在Python中为变量添加一个数字,不断将变量重置为原来的变量

时间:2013-05-05 19:01:27

标签: python function

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行重置。我怎么能阻止这个?

1 个答案:

答案 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