UnboundLocalError:局部变量“ x”

时间:2018-09-20 21:01:48

标签: python loops

我正在尝试创建一个初学者级程序,以更好地理解python编程。一个简单的while true循环,它向X添加一个值1,并根据x是否小于或大于10来打印“帮助”或“做某事”。然后在x大于20时中断。我还尝试添加一个键盘中断,以在不太复杂的情况下中断循环。任何提示都可以帮助我

Traceback (most recent call last):
  File "so.py", line 23, in <module>
    help()
  File "so.py", line 11, in help
    x += 1
UnboundLocalError: local variable 'x' referenced before assignment

代码:

import time

x = 1

try:

    def help():

        print("Help.")
        time.sleep(2)
        x += 1


    def doStuff():

        print("Doing Stuff")
        time.sleep(2)
        x += 1

    while True:

        if x < 10:
            help()
        elif x < 20 and x > 10:
            doStuff()
        else:
            break

except KeyboardInterrupt:
    exit()

1 个答案:

答案 0 :(得分:2)

问题恰恰是错误消息所说的……一旦您知道如何解释这些单词。

def help():

    print("Help.")
    time.sleep(2)
    x += 1

您正在尝试更改变量x。这要求x必须已经有一个值。但是,除非声明要在函数外引用一个变量,否则不能更改 global 变量。因此,Python期望您有一个 local 变量x -您尚未创建。只需根据需要声明变量:

def help():
    global x

    print("Help.")
    time.sleep(2)
    x += 1

现在,您的程序将打印Help. 10次并退出。