UnboundLocalError:在赋值Python之前引用的局部变量

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个变量呢?