0
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。我怎样才能阻止这个?

4

1 回答 1

2

您正在递归调用start(). 在每个连续调用中,您number在命名空间中创建一个带有 value的变量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
于 2013-05-05T19:03:22.857 回答