Python 3.2.1: переменная, на которую ссылаются до назначения, ранее работала - PullRequest
0 голосов
/ 19 ноября 2011

Я искал подобные вопросы здесь и не могу найти точного ответа. Я получаю сообщение об ошибке "... ссылка перед назначением".

Я пытаюсь поместить два графических объекта, возвращаемых из одной функции, в две переменные в другой функции.

У меня был в основном тот же кусок кода в более ранней версии, и он работал просто отлично.

У меня есть код:

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

И я продолжаю получать сообщение об ошибке:

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 Ответ

3 голосов
/ 19 ноября 2011

Что происходит раньше if moveE:?

Скорее всего, moveE и moveW - фальси.

...