Глобальная переменная, на которую ссылаются перед назначением?

#python #python-3.x #pycharm

#python #python-3.x #pycharm

Вопрос:

Я новичок в Python, и я пытаюсь создать очень простой код, в котором каждый раз, когда пользователь нажимает enter, он получает пять баллов, после чего в строке выводится количество баллов, которые у него есть в данный момент. Код выглядит так:

 pointsEarned = 0
alien_0 = {"points":5}
new_points = alien_0["points"]
def kill():
    input("Press enter to kill an alien!")
    pointsEarned = pointsEarned   5
    killed()
def killed():
    print("You just earned "   str(new_points)   " points!")
    print("Current points: "   str(pointsEarned))
    kill()
kill()
  

Однако, когда я запускаю этот код, он выдает мне эту ошибку:

 UnboundLocalError: local variable 'pointsEarned' referenced before assignment
  

Я этого не понимаю, поскольку я заранее определил pointsEarned вне любой функции. Как мне это исправить?

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

1. Объявляйте переменную явно как global . Если переменная находится в левой части присваивания в любом месте функции, она считается локальной, если не указано иное.

Ответ №1:

 pointsEarned = 0
alien_0 = {"points":5}
new_points = alien_0["points"]
def kill():
    global pointsEarned 
    input("Press enter to kill an alien!") 
    pointsEarned  = 5
    killed()
def killed():
    print("You just earned "   str(new_points)   " points!")
    print("Current points: "   str(pointsEarned))
    kill()
kill()