为什么变量永远不会减少?

时间:2012-08-20 18:03:50

标签: variables python-2.7

def complex():
    answer = raw_input("Would you like to run this program?")

    answer = answer.lower()

    money = 5

    if "yes" in answer:
        print money
        money = money - 1
        complex()

    else:
        quit()

complex()

出于某种原因,每次我在raw_input中输入“yes”它会吐出5.但我希望它吐出5然后当我再次输入yes时我希望它吐出4,然后如果我输入是的,我希望它吐出3 ....

我使用Global语句修复了这个问题:

money = 5
def complex():
answer = raw_input("Would you like to run this program?")
answer = answer.lower()


    if "yes" in answer:
        global money
        print money
        money = money - 1
        complex()

    else:
        quit()

complex()

5 个答案:

答案 0 :(得分:1)

moneycomplex函数的局部变量。

每次调用complex函数时,都会创建变量。

尝试在方法之前创建变量。

答案 1 :(得分:1)

这是你的程序正在做的事情:

  1. 获取用户输入
  2. 将变量money设置为5
  3. 验证用户输入值是否为“是”,如果是,则验证变量money为5时的打印值。
  4. 将变量money设置为5 - 1 = 4
  5. 运行程序complex()
  6. 获取用户输入
  7. 将变量money设置为5
  8. 验证用户输入值是否为“是”,如果是,则验证变量money为5时的打印值。
  9. 将变量money设置为5 - 1 = 4
  10. 运行程序complex()
  11. ... 等

    正如您所看到的,您的过程会在每次迭代时使用值5覆盖所需的值(4),这就是为什么它不能按您的意愿工作的原因。

    您可以做的是在money设置为5后,循环运行x次。

答案 2 :(得分:0)

在“复杂”功能中,您可以将money变量重置为5。

答案 3 :(得分:0)

因为你调用complex(),所以行     钱= 5 不断被召唤。要解决此问题,您的递归调用不应包含此设置。或者,使用迭代。

答案 4 :(得分:0)

更改金钱=金钱 - 一个到另一个变量,你使用它太多次了,它会花钱5个

print dollars 
dollars = money - 1