Ошибка Python, на которую ссылаются перед назначением

#python #python-3.x

#python #python-3.x

Вопрос:

Я пытаюсь создать игру с палачом с помощью pygame. Сама игра для этого не имеет значения. Я определил переменную на ранней стадии в своем коде, затем позже, когда вызывается функция, которая использует переменную, Python возвращает «UnboundLocalError: локальная переменная ‘guessedLetters’, на которую ссылаются перед присвоением», и функция, и вызов позже в моем коде, чем присвоение переменной. Это присвоение переменной: guessedLetters = "" .

Это функция:

 def guess(letter):
    if letter in word:
        pass
    else:
        guessedLetters  = '  '   letter
        hangmanStage  = 1
  

Здесь он вызывается (который находится в другом методе):

 def redrawWindow():
    win.fill((150, 150, 150))
    drawLetters()
    drawGuessedLetters()
    drawHangman()
  

И именно здесь вызывается этот метод

 while running:
    for event in ...
    redrawWindow()
    pygame.display.update()
  

Ответ №1:

guessedLetters должно быть объявлено внутри функции, если использование локальное, или снаружи, если оно глобальное.

В первом случае, если она объявлена вне функции, добавьте a global guessedLetters перед ссылкой на нее.

Если он локальный, добавьте guessedLetters = '' его сверху.

Сделайте это и для других переменных, например hangmanStage .

Комментарии:

1. Не кажется ли вам, что было бы лучше передать, guessedLetters а затем, после его изменения, вернуть его вызывающему?

2. @TigerhawkT3, вместо этого лучше return использовать оператор