Как выйти из цикла: break и continue
break сразу заканчивает цикл, программа идёт к строке после него:
for n in [3, 8, -1, 5]:
if n < 0:
print("Нашлось отрицательное:", n)
break
print("Проверено:", n)
print("После цикла")Проверено: 3
Проверено: 8
Нашлось отрицательное: -1
После циклаЧисло 5 уже не проверяется: цикл закончился на −1.
continue — пропустить шаг
continue не выходит из цикла, а пропускает остаток текущего шага и переходит к следующему:
for n in range(1, 11):
if n % 3 == 0:
continue
print(n, end=" ")
print()1 2 4 5 7 8 10while True и break
Когда заранее неизвестно, сколько будет повторений, пишут бесконечный цикл while True и выходят из него через break по условию:
words = []
while True:
word = input()
if word == "стоп":
break
words.append(word)
print("Слов:", len(words))яблоко
груша
стопСлов: 2Выход из вложенных циклов
break выходит только из того цикла, в котором стоит. Во вложенных циклах внешний продолжит работу. Самый понятный способ выйти сразу из всех — вынести циклы в функцию и выйти через return:
def find(grid, target):
for i, row in enumerate(grid):
for j, value in enumerate(row):
if value == target:
return i, j
return None
grid = [[1, 2, 3], [4, 5, 6]]
print(find(grid, 5))
print(find(grid, 7))(1, 1)
NoneДругой способ — переменная-флажок, которую проверяет внешний цикл:
grid = [[1, 2, 3], [4, 5, 6]]
found = False
for row in grid:
for value in row:
if value == 5:
found = True
break
if found:
break
print("Найдено:", found)Найдено: Trueelse у цикла
У for и while может быть блок else. Он выполняется, если цикл закончился сам, без break. Удобно для поиска: «перебрали всё — не нашли»:
n = 9
for d in range(2, n):
if n % d == 0:
print(n, "делится на", d)
break
else:
print(n, "— простое число")9 делится на 3Для n = 7 делитель не найдётся, break не выполнится, и программа выведет «7 — простое число». Обратите внимание: else стоит на одном уровне с for, а не с if.
pass — не путать с continue
pass вообще ничего не делает: это заглушка там, где по правилам языка нужна хотя бы одна строка. Цикл после pass продолжает текущий шаг как обычно, а после continue — сразу переходит к следующему.
Остановить всю программу
- Из программы —
sys.exit()(в начале программы нуженimport sys). Программа заканчивается сразу, где бы ни стояла эта строка. - Зависшую программу с бесконечным циклом — клавишами
Ctrl+Cв терминале или кнопкой остановки в Thonny.