Оператор прерывания цикла break
Иногда бывает нужно прервать выполнение цикла преждевременно. Оператор break
прерывает ближайший цикл for
или while
.
Усовершенствуем с помощью оператора break
программу, проверяющую число на простоту:
num = int(input())
flag = True
for i in range(2, num):
if num % i == 0:
flag = False
break
if flag:
print('Число простое')
else:
print('Число составное')
Как только мы встречаем делитель отличный от 1 и num
, мы меняем значение сигнальной метки и прерываем цикл, поскольку дальнейшее его выполнение лишено смысла: число гарантированно не является простым.
Оператор прерывания цикла break
позволяет ускорять программы, так как мы избавляемся от лишних итераций.
Напишем программу, использующую цикл for
, которая считывает 10 чисел и суммирует их до тех пор, пока не обнаружит отрицательное число. В этом случае выполнение цикла прерывается командой break
:
result = 0
for i in range(10):
num = int(input())
if num < 0:
break
result += num
print(result)
Оператор прерывания цикла break
удобен в связке с сигнальными метками: когда после проверки некоторого условия нам нет смысла продолжать выполнение цикла.
Напишем программу, которая определяет, содержит ли введенное пользователем число цифру 7.
num = int(input())
number = num
flag = False
while num != 0:
last_digit = num % 10
if last_digit == 7:
flag = True
break
num //= 10
if flag:
print('Число', number, 'содержит цифру 7')
else:
print('Число', number, 'не содержит цифру 7')
Как только мы встретили цифру 7, мы меняем значение сигнальной метки и прерываем цикл с помощью оператора break
. Мы можем и не прерывать цикл преждевременно, а дождаться его естественного завершения (условие num != 0
, то есть все цифры числа обработаны), однако в таком случае мы будем совершать лишнюю работу, и в случае, если число очень большое, программа будет работать медленнее.
Бесконечные циклы
В предыдущих уроках мы говорили о цикле, который не имеет возможности завершиться и назвали его бесконечным циклом. Самый простой способ создать бесконечный цикл в Python – записать следующий код:
while True:
print('Python is awesome!')
Результатом выполнения такого кода будет бесконечное количество строчек текста:
Python is awesome!
Python is awesome!
.
.
.
Python is awesome!
Python is awesome!
Python is awesome!
Бесконечный цикл продолжает повторяться до тех пор, пока программа не будет прервана. Изучив оператор break
, мы получили механизм прерывания бесконечных циклов.
Возможно, вам может показаться, что бесконечные циклы лишены смысла, однако это не совсем так. Например, вы можете написать программу, которая запускается и работает, постоянно принимая запросы на обслуживание. Программный код такой программы может выглядеть так:
while True:
query = get_new_query()
query.process()
Иногда с помощью бесконечного цикла удается сделать программный код более читабельным. Более простым может быть завершение цикла на основе условий внутри тела цикла, а не на основе условий в его заголовке:
while True:
if условие 1:
break
...
if условие 2:
break
...
if условие 3:
break
В подобных случаях, когда существует множество причин завершения цикла, часто их проще выделить из нескольких разных мест, чем пытаться указать все условия завершения в заголовке цикла.
Важно: бесконечные циклы могут быть очень полезными. Просто помните, что вы должны убедиться, что цикл в какой-то момент будет прерван, чтобы он действительно не становился бесконечным.
Оператор continue
Другая стандартная идиома циклов — пропуск отдельных элементов при переборе. Оператор continue
позволяет перейти к следующей итерации цикла for
или while
до завершения всех команд в теле цикла.
Напишем программу, которая выводит все числа от 1 до 100, кроме чисел 7, 17, 29 и 78.
for i in range(1, 101):
if i == 7 or i == 17 or i == 29 or i == 78:
continue
print(i)
Примечания
Примечание 1. Оператор break
прерывает выполнение ближайшего цикла, а не программы, то есть далее будет выполнена команда, следующая сразу за циклом.
Примечание 2. Графическое представление операторов break
и continue
имеет вид:
