Как исправить ошибку Python: «UnboundLocalError: локальная переменная ‘id1’, на которую ссылаются перед назначением»

#python #python-3.x

#python #python-3.x

Вопрос:

Я пытаюсь создать небольшую игру с Python. Я создал этот код :

 def create_ennemy() :
    x = 1200
    y = randint(0, 650)
    t = randint(1, 5)
    if t <= 4 :
        id1 = c.create_polygon(7.5, 7.5, 7.5, 37.5, 52.5, 22.5, fill='red')
        r = 22.5
    elif t == 5 :
        c.create_polygon(7.5, 7.5, 7.5, 75, 105, 45, fill='red')
        r = 45
        ennemy_list.append(id1)
        ennemy_type.append(t)
  

Но я получаю следующую ошибку :

Файл «Jeux-d-avions.py», строка 71, в create_ennemy ennemy_list.append(id1) UnboundLocalError: локальная переменная ‘id1’, на которую ссылаются перед назначением

Я искал в Интернете, но это не решило мою проблему. Почему мой код не работает?

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

1. Исправьте отступ, пожалуйста.

2. если t > 4 тогда id1 никогда не существует, поэтому вы не можете добавить ее в список.

3. Я думаю, проблема в строке сразу после вашего elif . Вероятно, это должно читаться id1 = c.create_polygon(7.5, 7.5, 7.5, 75, 105, 45, fill='red') , но неясно из-за отсутствия отступа.

Ответ №1:

В вашем коде нет присвоения id1 в случае elif

Я предполагаю, что вы имеете в виду, должно быть следующим:

  def create_ennemy() :
    x = 1200
    y = randint(0, 650)
    t = randint(1, 5)
    if t <= 4 :
        id1 = c.create_polygon(7.5, 7.5, 7.5, 37.5, 52.5, 22.5, fill='red')
        r = 22.5
    elif t == 5 :
        id1 = c.create_polygon(7.5, 7.5, 7.5, 75, 105, 45, fill='red')
        r = 45
    ennemy_list.append(id1)
    ennemy_type.append(t)
  

Ответ №2:

В вашем коде нет проблемы, вам просто нужно сделать отступ в вашем коде и внести незначительные изменения для присвоения id1 .

 def create_ennemy() :
    x = 1200
    y = randint(0, 650)
    t = randint(1, 5)
    if t <= 4 :
        id1 = c.create_polygon(7.5, 7.5, 7.5, 37.5, 52.5, 22.5, fill='red')
        r = 22.5
    elif t == 5 :
        id1 = c.create_polygon(7.5, 7.5, 7.5, 75, 105, 45, fill='red')
        r = 45

    ennemy_list.append(id1)
    ennemy_type.append(t)
  

это исправит упомянутую вами ошибку.