UnboundLocalError: local variable referenced before assignment Python
本问题已经有最佳答案,请猛点这里访问。
我的"def"功能一直有问题。我知道这个问题已经被问到了,但是答案并不能让我满意,我也不知道如何将它应用到我的代码中。我正在尝试用Python制作流行的游戏2048。基本上,当我定义使整个电路板向左移动的函数时,它会咬我一口错误:unboundlocalerror:赋值前引用的局部变量。似乎我必须在某个地方定义变量"bone"和"btwo",而不是全局变量。但我还没有弄清楚如何让它发挥作用。在moveLeft()函数中设置参数不起作用,例如moveLeft(bone,btwo)。所以我已经无计可施了。
现在,我将包括整个代码,所有的代码都被注释掉了,但是我认为有问题的部分是我在哪里定义了函数moveLeft()。另外,如果有任何优秀的愚蠢的代码位,请告诉我。另外,尽量保持简单,我对编程及其相关短语和术语简直就是垃圾。这只是我第三次尝试代码。
我知道我问了很多,但我真的非常感谢你的帮助。
代码:网址:http://pastebin.ca/2824228
最小化版本:
1 2 3 4 5 6 7 8 9 10 | bone, btwo = 1, 2 def move_left(): if bone == 1: print("bone is 1") if btwo == 2: print("btwo is 2") btwo = 3 bone = 2 move_left() |
如果要写入函数内的全局变量,则需要显式地说您引用的是全局变量。所以把它作为函数的第一行:
1 | global bone, btwo, bthree, bfour, bfive, bsix, bseven, beight, bnine |
而且,为什么不使用列表而不是定义9个变量呢?