每当我开始游戏时,假设我输入 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/