Почему не работает break python
Перейти к содержимому

Почему не работает break python

  • автор:

Что означает ошибка SyntaxError: ‘break’ outside loop

Ситуация: мы пишем опросник на Python, и нам важно, чтобы его мог пройти только совершеннолетний. Для этого мы добавляем в код такую логику:

  1. Спрашиваем про возраст.
  2. Смотрим, он больше 18 или нет.
  3. Если нет — останавливаем программу.
  4. Пишем дальше код, который будет работать, если участнику есть 18 лет и программа не остановилась.

На Python это выглядит так:

# запрашиваем возраст age_txt = input('Введите свой возраст: ') # переводим введённое значение в число age = int(age_txt) # если меньше 18 лет if age < 18: # выводим сообщение print('Вы не можете участвовать в опросе') # выходим из программы break # спрашиваем имя name_txt = input('Как вас зовут: ')

Вроде всё логично, но после запуска мы получаем ошибку:

❌ SyntaxError: 'break' outside loop

Что это значит: в отличие от многих других языков, команда break в Python используется только для выхода из цикла, а не выхода из программы в целом.

Когда встречается: когда мы хотим выйти из программы в середине её работы, но не знаем как.

Что делать с ошибкой SyntaxError: 'break' outside loop

Всё зависит от того, что вы хотите сделать.

Если вы хотите выйти из цикла, то break служит как раз для этого — нужно только убедиться, что всё в порядке с отступами. Например, здесь мы выйдем из цикла, как только переменная станет больше 9:

for i in range(10): print(i) if i > 8: break

А если вы хотите закончить работу программы в произвольном месте, то нужно вместо break использовать команду exit() . Она штатно завершит все процессы в коде и остановит программу. Это как раз подойдёт для нашего примера с опросником — теперь программа остановится, если возраст будет меньше 18:

# запрашиваем возраст age_txt = input('Введите свой возраст: ') # переводим введённое значение в число age = int(age_txt) # если меньше 18 лет if age < 18: # выводим сообщение print('Вы не можете участвовать в опросе') # выходим из программы exit() # спрашиваем имя name_txt = input('Как вас зовут: ')

Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.

Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём!

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Ошибка в коде с циклом и break

Всем привет, в моем коде возникла ошибка, которую даже представить не знаю как решить. Ошибка заключается в том, что выбирается рандомное число от 0 до 1, если число равняется 1, то по идее выполняется break и соответственно должно выходить из цикла. Но почему-то это не происходит и код идет дальше (если бы число равнялось 0). Вроде раньше все было хорошо, но вчера возникла эта ошибка, пытался поискать ошибки, но нигде ничего не нашел. Прошу помочь, заранее спасибо!

def MeetMonster(): Shrek.Level = rd.randint(1, 3) * Pl.Level Shrek.Hp = rd.randint(3, 10 * (Pl.Level)) * Shrek.Level + Pl.Damage Shrek.Damage = (Shrek.Level * 4) * Pl.Level Monster = rd.choice(Shrek.Name) print("Ты набрел на монстра - , у него уровень, здоровья и урона".format(Monster, Shrek.Level, Shrek.Hp, Shrek.Damage)) sleep(0.4) print() while True: choice = input("Попытаться убежать или будешь сражаться (бег/атака)?: ").lower() print() sleep(0.4) if choice == "бег": *Ошибка здесь* if rd.randint(0, 1) == 1: print("Фух, пронесло. ") print() break else: print("Монстр оказался чересчур сильным и догнал тебя. ") print() sleep(0.4) break elif choice == "атака": break else: continue *Из-за этой ошибки оно запускает вот это:* while Shrek.Hp > 0: if Pl.Critical >= rd.randint(1, 10): Shrek.Hp -= Pl.Damage * 2 print("Вы нанесли критический удар!") sleep(0.4) else: Shrek.Hp -= Pl.Damage sleep(0.4) print("Ты атаковал монстра и у него осталось", Shrek.Hp, "здоровья") sleep(0.4) print() if Shrek.Hp > 0: if Pl.Dodge >= rd.randint(1, 10): Pl.Hp -= 0 print("Вы уклонились!") sleep(0.4) else: Pl.Hp -= (Shrek.Damage - Pl.Armor) if Shrek.Damage < 0: Pl.Hp - 0 print("Монстр ударил тебя и у тебя осталось", Pl.Hp, "здоровья") print() sleep(0.4) else: corruption = Pl.Corruption corruption = 2 xp = Pl.Xp xp = rd.randint(25, 50) * Shrek.Level loot = rd.randint(5, 25) * Shrek.Level if Pl.PlusMonsterCoinDrop >0: Pl.Coins += (loot * Pl.Level * (1.0 + Pl.PlusMonsterCoinDrop)) Pl.Xp += (xp * (1.0 + Pl.PlusMonsterCoinDrop)) Pl.Corruption += 2 Pl.Score += 120 else: Pl.Coins += (loot * Pl.Level) Pl.Xp += xp Pl.Corruption += 2 Pl.Score += 100 print("Тебе удалось одолеть монстра, за что ты получил", loot, "монет,", xp, "опыта", "и", corruption, "единиц искажения" ) print() LevelUp() sleep(0.2) PrintCorruption() PrintCoins() PrintXp() PrintHp() print() Pl.MonsterKilled += 1 if Pl.Hp 50 and Place == Place  

Почему не выходит из цикла for после команды break python?

Проблема:
Работает цикл While в нем запускается цикл for,
в цикле for я проверяю нет ли новых сообщений, если есть я хочу выполнить определенное действие, если нет я хочу вернуться к циклу while, использую команду break, но она не выводит меня из цикла for не могу понять почему и очень прошу помочь

for event2 in longpoll.listen(): if event2.type == VkEventType.MESSAGE_NEW: print('yes') else: break
  • Вопрос задан более трёх лет назад
  • 274 просмотра

2 комментария

Простой 2 комментария

Ошибка в коде, оператор break

Author24 — интернет-сервис помощи студентам

Всем доброго времени! Почему в коде на 22 строке если ставлю break то выдает ошибку, а без break работает и работает оперетор if тоже но тогда цикл вечно работает , почему так?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
# -*- coding:utf-8 -*- import random def maingame(): xodu = random.randint(1, 30) print('гравець зaявив кількість ходів', xodu) a = 0 suma_a = 0 while a  xodu and suma_a  50: kubik = random.randint(1, 6) print(kubik,) a += 1 if kubik == 1: suma_a = 0 print('-> перехід ходу, гравець викинув 1 сума обнулилась') break suma_a += kubik if suma_a >= 50: print('гравець виграв') print('заявлена кількість ходів гравця -', xodu, 'ходів виконав -', a, 'сума викинута з ходів кубика -', suma_a) print('зявлена кількість ходів гравця -', xodu, 'клькість ходів -', a, 'сума викинута з ходів кубика -', suma_a) def startgame(): while 1: print('\n---- грає гравець 1 ----') maingame() print('\n----грає гравець 2 ----') maingame() startgame()

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Ошибка main.cpp:13:23: error: break statement not within loop or switch if (A[i].size() == 0) break;
Помогите решить ошибку вот сама программа #include <iostream> using namespace std; int main().

Оператор break как оператор go to next
Подскажите, в этом примере break эквивалентна действию оператора go to next?

Оператор case: ошибка в коде
в строке условия прямо после then пишет ошибку case b of 3,5,8: if.

Оператор break
Подскажите, пожалуйста почему оператор break в строке 44 выдаёт ошибку, и как её исправить.

оператор break
Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо. И.

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

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