Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.2.1:赋值前引用的变量,以前有效_Python_Graphics_Return - Fatal编程技术网

Python 3.2.1:赋值前引用的变量,以前有效

Python 3.2.1:赋值前引用的变量,以前有效,python,graphics,return,Python,Graphics,Return,我在这里搜索过类似的问题,但找不到确切的答案。我一直收到一个“…分配前引用”错误 我试图将一个函数返回的两个图形对象放入另一个函数的两个变量中 在早期版本中,我基本上拥有完全相同的代码,并且工作得很好 我有一段代码: if moveE: moved_ctr, nT = MoveCharacter(ctr, spaceSize, borderSet, "east") if moveW: moved_ctr, nT = MoveCharacter(ctr, spaceSize, bo

我在这里搜索过类似的问题,但找不到确切的答案。我一直收到一个“…分配前引用”错误

我试图将一个函数返回的两个图形对象放入另一个函数的两个变量中

在早期版本中,我基本上拥有完全相同的代码,并且工作得很好

我有一段代码:

if moveE:
    moved_ctr, nT = MoveCharacter(ctr, spaceSize, borderSet, "east")
if moveW:
    moved_ctr, nT = MoveCharacter(ctr, spaceSize, borderSet, "west")
moved_ctr.draw(board)
这就是MoveCharacter()的外观:

def MoveCharacter(character, spSz, bdSet, direction):
    x1 = character.getCenter().getX()
    x2 = bdSet
    y1 = character.getCenter().getY()
    y2 = bdSet
    notifyText = Text(Point(100, 100), "")

    character.undraw()

    distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)

    if direction == "east":
            if distance < spSz:
                    character.move(spSz, 0)
            else:
                    notifyText.setText("You cannot move right from where you currently are.")
    if direction == "west":
            if distance > spSz:
                    character.move(-1 * spSz, 0)
            else:
                    notifyText.setText("You cannot move left from where you currently are.")

    return character, notifyText
def MoveCharacter(character,spSz,bdSet,direction):
x1=character.getCenter().getX()
x2=bdSet
y1=character.getCenter().getY()
y2=bdSet
notifyText=文本(点(100100),“”)
character.undraw()
距离=数学sqrt((x2-x1)**2+(y2-y1)**2)
如果方向==“东”:
如果距离spSz:
字符移动(-1*spSz,0)
其他:
notifyText.setText(“您不能从当前位置向左移动。”)
返回字符,notifyText
我不断地发现错误:

Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    Grid()
  File "<pyshell#24>", line 70, in Grid
    moved_ctr.draw(board)
UnboundLocalError: local variable 'moved_ctr' referenced before assignment
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
网格()
文件“”,第70行,网格中
移动的中央绘图(板)
UnboundLocalError:赋值前引用了局部变量“moved\u ctr”

如果移动,在
之前会发生什么:


最有可能的是,
moveE
moveW
是错误的。

如果moveE:,在
之前会发生什么


很可能,
moveE
moveW
是错误的。

这:
moveE=rectIntersect(gE,点击)moveW=rectIntersect(gW,点击)
是在
之前的,如果moveE:
。同样,该代码与以前保持不变,当我单击相应的按钮时,它返回
True
rectIntersect()
只是讲师提供的一个函数,用于检查鼠标单击是否在给定的矩形内。虽然现在我在单击相应的按钮时测试了这些值,但这可能是部分问题所在。出于调试目的,可能需要打印出
moveE
moveW
。看起来你的问题是这两个都是
False
,所以
maved\u ctr
没有被分配到。@Dougal:当我打印
moveE
moveW
时,不管我是否点击其中一个,它们都会说
False
。我正在试图弄清楚为什么它现在不起作用,因为之前,我让一个返回
True
,另一个返回
False
,这意味着它得到了所有正确的结果,并且它将根据单击的内容采取适当的措施。当你“单击”什么?问一个关于您正在使用的特定图形API以及从UI获得的值的新问题。此问题:
moveE=rectIntersect(gE,单击)moveW=rectIntersect(gW,单击)
是在moveE:
之前的问题。同样,该代码与以前保持不变,当我单击相应的按钮时,它返回
True
rectIntersect()
只是讲师提供的一个函数,用于检查鼠标单击是否在给定的矩形内。虽然现在我在单击相应的按钮时测试了这些值,但这可能是部分问题所在。出于调试目的,可能需要打印出
moveE
moveW
。看起来你的问题是这两个都是
False
,所以
maved\u ctr
没有被分配到。@Dougal:当我打印
moveE
moveW
时,不管我是否点击其中一个,它们都会说
False
。我正在试图弄清楚为什么它现在不起作用,因为之前,我让一个返回
True
,另一个返回
False
,这意味着它得到了所有正确的结果,并且它将根据单击的内容采取适当的措施。当你“单击”什么?问一个关于您正在使用的特定图形API的新问题,以及您从UI获得的值。
在早期版本中是什么?(面对模棱两可的问题,拒绝猜测的诱惑)。
在早期版本中是什么?(面对模棱两可的情况,拒绝猜测的诱惑)。