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
在函数
xturn
中,您使用了变量of
,该变量在该范围内没有声明/已知,因此会出现错误。在如果查看堆栈跟踪:
您可以通过查看文件中错误所在的行来解决这个问题。在
在函数xturn中,的变量(以及所有其他2个字母的变量)不可用。在
我强烈建议您使用增量编程:编写几行代码,使其正常工作,然后放大您的程序。这使您可以很容易地将注意力集中在错误上。每当我攻击一种新的编程风格时,我都觉得这很有用。看来你对这里使用的一些技术还不熟悉。在
例如,您在中使用而不是==进行比较。这不是一个普遍的原则。在
在主程序之前声明函数。按照你写这篇文章的方式,你在每次循环中都要重新定义你的函数。将函数移到顶部也可以解决许多变量范围问题。在
学习使用布尔值和变量。循环应该如下所示:
通过将变量作为参数传递给函数,可以使变量可用。我可以看出你是新手,因为你给了这个函数一个从未使用过的参数x。在
总的来说,你不应该有9个变量:你应该有一个列表,然后把整个列表作为游戏板的当前状态来传递。如果你把方格编号为0-8,你可以很容易地在这方面与董事会合作。在
要解决当前的问题,您可以在每个例程中添加以下行:
^{pr2}$这将使变量可用。我知道托马斯已经指出了这一点。在
不过,我还是鼓励你把这个设计得更干净。使用全局变量通常是糟糕的设计。另外,请注意要为这个程序复制多少代码?它应该容易得多。在
访问某个函数内部的变量基本上可以工作,即使变量只在外部范围内定义。但是在
xturn
函数中,有一行指定给of
。这行代码是否在错误发生之前被执行并不重要;它仅仅存在于函数中的任何地方都会导致Python解释器将其视为局部变量。因此,当在if
子句中访问它时,Python会尝试访问一个局部变量of
,而现在这种局部变量直到那个时候才被赋值是很重要的。在相关问题 更多 >
编程相关推荐