首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.3: UnboundLocalError:赋值前引用的局部变量

Python3.3: UnboundLocalError:赋值前引用的局部变量
EN

Stack Overflow用户
提问于 2016-02-17 23:09:20
回答 3查看 3.8K关注 0票数 1

每当我开始我的游戏,比如说,我输入1,4作为网格引用,它将用

"UnboundLocalError:赋值前引用的局部变量“

我怎么才能解决这个问题?

代码(为简洁而编辑):

代码语言:javascript
复制
import time
while 1==1:
    cont=1
    while cont==1:

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-17 23:16:42

变量of (以及所有其他两个字母的变量)在函数x转向中不可用。

我强烈建议您使用增量编程:编写几行代码,让这些代码正常工作,然后放大程序。这使得您可以很容易地锁定错误。每当我攻击一种新的编程风格时,我都会发现这是非常有用的。看来你对这里使用的一些技术是陌生的。

例如,您在中使用而不是==来进行比较。作为一般原则,这是行不通的。

在主程序之前声明您的函数。在编写这段代码时,每次遍历循环时都要重新定义函数。将函数移到顶部也可以解决许多变量范围的问题。

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

代码语言:javascript
复制
while True:
    cont = True
    while cont:

通过将变量作为参数传递给函数,可以使变量可用。我可以看到,您对此非常陌生,因为您为这个函数提供了一个参数x,您从未使用过它。

总的来说,您不应该有9个变量:您应该有一个列表,然后将整个列表作为游戏板的当前状态传递。如果你把正方形编号为0-8,你可以很容易地在这方面与董事会一起工作。

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

代码语言:javascript
复制
global of,tf,rf,ov,tv,rv,os,ts,rs

这将使变量可用。我看到托马斯已经指出了这一点。

尽管如此,我还是鼓励你更干净地设计它。使用全局变量通常是错误的设计。另外,注意到这个程序需要复制多少代码?应该容易多了。

票数 2
EN

Stack Overflow用户

发布于 2016-02-17 23:21:51

访问一个函数中的变量基本上是可行的,即使该变量仅在外部范围内定义。但是在您的xturn函数中,您有一个分配给of的行。这行在错误发生之前是否已经执行并不重要;它仅仅存在于函数中的任何地方,就会导致Python解释器将其视为局部变量。因此,当在if子句中访问它时,Python尝试访问局部变量of,而现在重要的是直到那个时候才分配这样的局部变量。

票数 2
EN

Stack Overflow用户

发布于 2016-02-17 23:15:35

在您的函数xturn中,您使用了变量of,该变量在该作用域中未声明/已知,因此出现了错误。

如果您查看堆栈跟踪:

代码语言:javascript
复制
Traceback (most recent call last):
  File "D:/Projekte/Python/snakes35/blabla.py", line 141, in <module>
    ocheck(1)
  File "D:/Projekte/Python/snakes35/blabla.py", line 138, in ocheck
    xturn(1)
  File "D:/Projekte/Python/snakes35/blabla.py", line 33, in xturn
    if goo in "1,4" and of not in "o":
UnboundLocalError: local variable 'of' referenced before assignment

您可以通过查看文件中的行(错误所在的位置)来确定这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35469611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档