python - 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()
解决方案
问题正是错误消息所说的......一旦你知道如何解释这些词。
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 次并退出。
推荐阅读
- java - 仅将浮点数和双精度值与对象进行比较
- java - 具有大 double 值的 Java 更大公约数
- javascript - 显示警报而不是下载文件
- java - 如何让我的 JDA 机器人在服务器上工作,而不仅仅是在 DM 上工作?
- angular - Angular 10 报告进度事件总数未定义,存在 Content-Length 标头
- c# - PropertyInfo.GetValue(null) - 它应该如何表现?
- c++ - 翻译文本中的Qt5换行符?
- jira - 如何为内置验证器应用条件
- oracle - 尝试运行 netmgr 时未在 CentOS 8.2.2004 上使用 Oracle Database EE 19c 指定协议
- python - Plotlty:如何更改动画热图中的过渡时间?