Почему цикл if внутри цикла for который находится в цикле while не работает?



@Yurazik

Делаю игру лабиринт (задание в курсах т.к. только начал изучать питон) не работают циклы. Не знаю в чём проблема.

Код

while True:
             for i in range(0,8):
              room = random.randint(1,3)
              if room == 1:
                  mimik = random.randint(1,2)
                  print('> Вы попали в комнату без монстров')
                  print('> В углу комнаты стоит сундук')
                  choice_1 = int(input('> Будете ли вы его осматривать?(1.Да 2.Нет)'))
                  if choice_1 == 1:
                      if mimik == 1 and bad_equip == 1:
                         print('> Это был мимик!')
                         print('> При битве с ним вы потеряли 50 хп, в следующий раз будьте осторожны!')
                         print('Так же вы получили 100 монет за его убийство')
                         print('> Вы переходите в следующую комнату')
                         money += 100
                         health -= 50
                         print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                         if health <= 0:
                             print('> Вы были убиты, будьте осторожны в следующий раз')
                             attempt += 1
                             break
                      elif mimik == 1 and norm_equip == 1:
                         print('> Это был мимик!')
                         print('> При битве с ним вы потеряли 25 хп, в следующий раз будьте осторожны!')
                         print('Так же вы получили 100 монет за его убийство')
                         print('> Вы переходите в следующую комнату')
                         money += 100
                         health -= 25
                         print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                         if health <= 0:
                             print('> Вы были убиты, будьте осторожны в следующий раз')
                             attempt += 1
                             break
                      elif mimik == 1 and best_equip == 1:
                         print('> Это был мимик!')
                         print('> При битве с ним вы ничего не потеряли, так держать двигайтесь дальше!')
                         print('> Так же вы получили 100 монет за его убийство')
                         print('> Вы переходите в следующую комнату')
                         money += 100
                         print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                  elif choice_1 == 2 :
                      print('> Вы решили не трогать сундук, и это было правильное решение ведь это был опасный мимик!')
                      print('> Вы переходите в следующую комнату')
                      print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
              elif room == 2:
                  type_of_monstr = random.randint(1,3)
                  print('> Вы попали в комнату с монстрами')
                  if type_of_monstr == 1:
                      print('> Это оказались слабые скелеты\n> Хотите ли вы сразится с ними?(1.Да 2.Нет)')
                      choice_2 = int(input('> '))
                      if choice_2 == 1:
                          if bad_equip == 1:
                              print('> Вы решили сразится с монстрами,с довольно большими усилиями вы смогли победить')
                              print('> Вы потеряли 20 хп и получили 30 монет')
                              money += 30
                              health -= 20
                              print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                              if health <= 0:
                                  print('> Вы были убиты, будьте осторожны в следующий раз')
                                  attempt += 1
                                  break
                          elif norm_equip == 1:
                              print('> Вы решили сразится с монстрами,с усилиями вы смогли победить')
                              print('> Вы потеряли 10 хп и получили 30 монет')
                              money += 30
                              health -= 10
                              print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                              if health <= 0:
                                  print('> Вы были убиты, будьте осторожны в следующий раз')
                                  attempt += 1
                                  break
                          elif best_equip == 1:
                              print('> Вы решили сразится с монстрами,без усилий вы смогли победить')
                              print('> Вы не потеряли хп и получили 30 монет')
                              money += 30
                      elif choice_2 == 2:
                          print('Так как монстры были слабыми вы смогли сбежать')
                  elif type_of_monstr == 2:
                      print('> Это оказались драугры среднего класса!\n> Хотите ли вы сразится с ними?(1.Да 2.Нет)')
                      choice_2 = int(input('> '))
                      if choice_2 == 1:
                          if bad_equip == 1:
                              print('> Вы решили сразится с монстрами,с довольно большими усилиями вы смогли победить')
                              print('> Вы потеряли 80 хп и получили 100 монет')
                              money += 100
                              health -= 80
                              print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                              if health <= 0:
                                  print('> Вы были убиты, будьте осторожны в следующий раз')
                                  attempt += 1
                                  break
                          elif norm_equip == 1:
                              print('> Вы решили сразится с монстрами,с большими усилиями вы смогли победить')
                              print('> Вы потеряли 40 хп и получили 100 монет')
                              money += 100
                              health -= 40
                              print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                              if health <= 0:
                                  print('> Вы были убиты, будьте осторожны в следующий раз')
                                  attempt += 1
                                  break
                          elif best_equip == 1:
                              print('> Вы решили сразится с монстрами,с небольшими усилиями вы смогли победить')
                              print('> Вы потеряли 10 хп и получили 100 монет')
                              money += 100
                              health -= 10
                      elif choice_2 == 2:
                          if bad_equip == 1:
                              print('> Вы смогли проскользнуть мимо но вам кинули кость в спину\n> Вы потеряли 20 хп')
                              health -= 20
                          elif norm_equip == 1:
                              print('> Вы смогли пробежать мимо\n> Вы ничего не потеряли')
                          elif best_equip == 1:
                              print('Вы не только смогли проскользнуть мимо но ещё и нашли мешок с золотом по пути\n> Вы получили 50 золота')
                              money += 50
                  elif type_of_monstr == 3:
                          print('> Это оказались культисты высшего класса!\n> Хотите ли вы сразится с ними?(1.Да 2.Нет)')
                          choice_2 = int(input('> '))
                          if choice_2 == 1:
                              if bad_equip == 1:
                                  print('> Вы решили сразится с монстрами, они вас ваншотнули\n> Купите эквип получше!')
                                  break
                              elif norm_equip == 1:
                                  print('> Вы решили сразится с монстрами, они оставили вас на 1 хп и вы слутали с них наилучшиую экипировку\n> Будьте осторожнее!')
                                  health = 1
                                  best_equip = 1
                                  norm_equip = 0
                                  bad_equip = 0
                                  print(f'> Ваше хп составляет:{health}\n> У вас {money} монет')
                              elif best_equip == 1:
                                  print('> Вы решили сразится с монстрами,с большими усилиями вы смогли победить')
                                  print('> Вы потеряли 50 хп и получили 500 монет')
                                  money += 500
                                  health -= 50
                          elif choice_2 == 2:
                              if bad_equip == 1:
                                  print('> Вы не смогли проскользнуть мимо, вы побигбли')
                                  break
                              elif norm_equip == 1:
                                  print('> Вы смогли пробежать мимо\n> Но вам кастанули фаербол в спину\n> Вы потеряли 70 хп')
                                  health -= 70
                              elif best_equip == 1:
                                  print('> Вы просто прошли мимо, монстры посчитали вас своим боссом\n> Вы ничего не потеряли')
              elif room == 3:
                  luck = random.randint(1,2)
                  print('> Вы попали в комнату с ловушками\n> Вы пытаетесь проскользуть мимо ловушки')
                  if luck == 1:
                      print('> Вам удалось пройти мимо ловушек\n> Вы проходите дальше')
                  elif luck == 2:
                      print('> Вам не удалось пройти мимо\n> Вы погибли')
                      break


Решения вопроса 1



@trapwalker Куратор тега Python

С чего вы взяли что у вас там что-то не работает?
Во-первых:

Почему цикл if внутри цикла for который находится в цикле while не работает?

if — это не цикл.
Во-вторых, в ытам накосячили с отступами.
В-третьих, в таком спагетти коде не мудрено наделать ошибок, а у вас еще и break встречается то и дело. Нарисуйте блок-схему вашего алгоритма, тогда станет понятнее. А сейчас этот код вообще не читаем, отчего просто бесполезен и должен быть удален и переписан заново.
Попробуйте разбить весь этот код на функции. Функуии должны быть короткие, читабельные и «чистые» (то есть зависеть только от аргументов, а не от внешних и глобальных факторов)


Ответы на вопрос 2



@CityCat4

Почему цикл if

Наверное потому что if — ни разу не цикл 🙂



@saboteur_kiev Куратор тега Python

изучите функции, и весь повторяющийся код уберите в функции.
Вам самому будет проще ориентироваться в єтой каше.

Добавить комментарий

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