首页 > 解决方案 > UnboundLocalError:局部变量“x”

问题描述

我正在尝试创建一个初学者级别的程序来更好地理解 python 编程。一个简单的 while true 循环,将值 1 添加到 X 并根据 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()

标签: pythonloops

解决方案


问题正是错误消息所说的......一旦你知道如何解释这些词。

def help():

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

您正在尝试更改变量x。这要求x必须已经有一个值。但是,您不能更改全局变量,除非您已声明要引用函数外部的变量。因此,Python 期望你有一个局部变量x——你没有创建它。只需根据需要声明变量:

def help():
    global x

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

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


推荐阅读