python (3.3): UnboundLocalError: local variable referenced before assignment

标签 python python-3.x

每当我开始游戏时,假设我输入 1,4 作为网格引用,它都会回复

"UnboundLocalError: local variable 'of' referenced before assignment"

我该如何解决这个问题?

代码(为简洁起见进行编辑):

import time
while 1==1:
    cont=1
    while cont==1:

        of="-"
        tf="-"
        rf="-"
        ov="-"
        tv="-"
        rv="-"
        os="-"
        ts="-"
        rs="-"
        go=1
...

最佳答案

变量of(以及所有其他2个字母的变量)在函数xturn中不可用。

我强烈建议您使用增量编程:编写几行代码,让它们工作,然后扩展您的程序。这使您可以轻松地将错误归零。每当我尝试一种新的编程风格时,我都会发现这非常有用。您似乎对此处使用的某些技术不熟悉。

例如,您使用 in 而不是 == 进行比较。作为一般原则,这并不能很好地发挥作用。

在主程序之前声明您的函数。按照您编写的方式,每次执行循环时都会重新定义函数。将函数移到顶部也可以解决许多变量作用域问题。

学习使用 bool 值和变量。您的循环应如下所示:

while True:
    cont = True
    while cont:
<小时/>

您可以通过将变量作为参数传递给函数来使变量可用。我可以看出您对此很陌生,因为您给了这个函数一个您从未使用过的参数x

总的来说,您不应该有 9 个变量:您应该有一个列表,然后将整个列表作为游戏板的当前状态传递。如果您将方格编号为 0-8,您就可以轻松地在这方面与董事会合作。

<小时/>

要解决眼前的问题,您可以将此行添加到每个例程中:

global of,tf,rf,ov,tv,rv,os,ts,rs

这将使变量可用。我看到@Thomas 已经指出了这一点。

不过,我鼓励您更加简洁地设计它。使用全局变量通常是糟糕的设计。另外,请注意您必须为此程序复制多少代码? 应该容易得多。

关于 python (3.3): UnboundLocalError: local variable referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469611/

相关文章:

python - 将二进制 Pandas Dataframe 折叠成一列

python-3.x - 根据 flask 中的其他选择选项显示选择字段

谁能把这个翻译成Python?

python - 使用 Pyramid 通过电子邮件发送从 POST 请求上传的文件

javascript - 原子编辑器 : node-gyp rebuild crashes

python - 逆转 Python 的 re.escape

python - 将 Python 列表传递给 SQL Server 查询的 ORDER BY 子句

linux - 如何使用python脚本在linux中获取和打开接口(interface)

python - 如何在 Python 中订阅 NATS 主题并继续接收消息?

python - 在不更改 sys.path 的情况下控制 python 中的导入顺序