Разрыв цикла в питоне

Операторы break, continue и pass в циклах Python 3

При работе с циклами while и for бывает необходимо выполнить принудительный выход, пропустить часть или игнорировать заданные условия. Для первых двух случаев используются операторы break и continue Python , а для игнорирования условий — инструкция pass . Давайте посмотрим на примерах, как работают эти операторы.

Оператор break

Инструкция break в языке программирования Python прерывает выполнение блока кода. Простейший пример:

for j in 'bananafishbones': 
if j == 'f':
break
print(j)

Как только программа после нескольких итераций доходит до элемента последовательности, обозначенного буквой f , цикл (loop) прерывается, поскольку действует оператор break . Теперь рассмотрим работу этой инструкции в цикле while :

x = 0
while x < 5:
print(x)
x += 0.5
print('Выход')

Вывод будет следующий (приводим с сокращениями):

Как только перестает выполняться условие и x становится равным 5, программа завершает цикл. А теперь перепишем код с использованием инструкции break :

x = 0
while True:
print(x)
if x >= 4.5:
break
x += 0.5
print('Выход')

Мы точно так же присвоили x значение 0 и задали условие: пока значение x истинно (True), продолжать выводить его. Код, правда, получился немного длиннее, но бывают ситуации, когда использование оператора прерывания оправданно: например, при сложных условиях или для того, чтобы подстраховаться от создания бесконечного цикла. Уберите из кода выше две строчки:

x = 0
while True:
print(x)
x += 0.5
print('Выход')

И перед нами бесконечный вывод:

0
0.5

100
100.5

1000000
1000000.5

И слово в конце (‘Выход’), таким образом, никогда не будет выведено, поскольку цикл не закончится. Поэтому при работе с последовательностями чисел использование оператора break убережет вас от сбоев в работе программ, вызываемых попаданием в бесконечный цикл.

Читайте также:  How to create thread python

Конструкция с else

Иногда необходимо проверить, был ли цикл исполнен до конца или выход произошел с использованием инструкции break . Для этого добавляется проверка по условию с else . Напишем программу, которая проверяет фразу на наличие запрещенных элементов:

word = input('Введите слово: ')
for i in word:
if i == 'я':
print('Цикл был прерван, обнаружена буква я')
break
else:
print('Успешное завершение, запрещенных букв не обнаружено')
print('Проверка завершена')

Теперь, если пользователь введет, например, «Привет!», программа выдаст следующее:

Успешное завершение, запрещенных букв не обнаружено
Проверка завершена

Но если во введенном слове будет буква «я», то вывод примет такой вид:

Цикл был прерван, обнаружена буква я
Проверка завершена

Небольшое пояснение: функция input принимает значение из пользовательского ввода (выражение ‘Введите слово: ‘ необходимо только для пользователя, для корректной программы хватило бы и такой строки: word = input () ) и присваивает его переменной word . Последняя при помощи for поэлементно (в данном случае — побуквенно) анализируется с учетом условия, вводимого if .

Оператор continue в Python

Если break дает команду на прерывание, то continue действует более гибко. Его функция заключается в пропуске определенных элементов последовательности, но без завершения цикла. Давайте напишем программу, которая «не любит» букву «я»:

word = input('Введите слово: ')
for i in word:
if i == 'я':
continue
print(i)

Попробуйте ввести, например, «яблоко», в этом случае вывод будет таким:

Это происходит потому, что мы задали условие, по которому элемент с определенным значением (в данном случае буква «я») не выводится на экран, но благодаря тому, что мы используем инструкцию continue , цикл доходит до последней итерации и все «разрешенные» элементы выводятся на экран. Но в коде выше есть одна проблема: если пользователь введет, например, «Яблоко», программа выведет слово полностью, поскольку не учтен регистр:

Наиболее очевидное решение в данном случае состоит в добавлении и заглавной буквы в блок if таким образом:

word = input('Введите слово: ')
for i in word:
if i == 'я' or i == 'Я':
continue
print(i)

Оператор pass в Python

Назначение pass — продолжение цикла независимо от наличия внешних условий. В готовом коде pass встречается нечасто, но полезен в процессе разработки и применяется в качестве «заглушки» там, где код еще не написан. Например, нам нужно не забыть добавить условие с буквой «я» из примера выше, но сам этот блок по какой-то причине мы пока не написали. Здесь для корректной работы программы и поможет заглушка pass :

word = input('Введите слово: ')
for i in word:
if i == 'я':
pass
else:
print('Цикл завершен, запрещенных букв не обнаружено')
print('Проверка завершена')

Теперь программа запустится, а pass будет для нас маркером и сообщит о том, что здесь нужно не забыть добавить условие.

Вот и всё, надеемся, скоро break , continue и pass станут вашими верными друзьями в разработке интересных приложений. Успехов!

Источник

Операторы break и continue в Python

Блок-схема оператора continue

Мы не можем использовать какие-либо опции, метки или условия.

Примеры

Давайте посмотрим на несколько примеров использования оператора continue в Python.

1. Как продолжить цикл for?

Допустим, у нас есть последовательность целых чисел. Мы должны пропустить обработку, если значение равно 3. Мы можем реализовать этот сценарий, используя цикл for и оператор continue.

t_ints = (1, 2, 3, 4, 5) for i in t_ints: if i == 3: continue print(f'Processing integer ') print("Done")

продолжение цикла for

2. Совместно с циклом while

Вот простой пример использования оператора continue с циклом while.

count = 10 while count > 0: if count % 3 == 0: count -= 1 continue print(f'Processing Number ') count -= 1

пример с циклом while

3. Пример с вложенным циклом

Допустим, у нас есть список кортежей для обработки. Кортеж содержит целые числа. Обработку следует пропустить при следующих условиях.

  • пропустить обработку кортежа, если его размер больше 2.
  • пропустить выполнение, если целое число равно 3.

Мы можем реализовать эту логику с помощью вложенных циклов for. Нам нужно будет использовать два оператора continue для выполнения вышеуказанных условий.

list_of_tuples = [(1, 2), (3, 4), (5, 6, 7)] for t in list_of_tuples: # don't process tuple with more than 2 elements if len(t) > 2: continue for i in t: # don't process if the tuple element value is 3 if i == 3: continue print(f'Processing ')

пример с вложенным циклом

Многие популярные языки программирования поддерживают помеченный оператор continue. В основном он используется для пропуска итерации внешнего цикла в случае вложенных циклов. Однако Python не поддерживает помеченный оператор continue.

PEP 3136 был сделан, чтобы добавить поддержку метки для оператора continue. Но он был отклонен, потому что это очень редкий сценарий, который добавит ненужной сложности языку. Мы всегда можем написать условие во внешнем цикле, чтобы пропустить текущее выполнение.

Оператор break

  • Оператор break в Python используется для выхода из текущего цикла.
  • Мы не можем использовать оператор break вне цикла, он выдаст ошибку как «SyntaxError: ‘break’ external loop».
  • Мы можем использовать его с циклами for и while.
  • Если оператор break присутствует во вложенном цикле, он завершает внутренний цикл.
  • «Break» — зарезервированное ключевое слово в Python.

Блок-схема оператора break

схема работы оператора Break

Синтаксис оператора break

Синтаксис оператора break:

Мы не можем использовать какие-либо опции, метки или условия.

Примеры

1. оператор break с циклом for

Допустим, у нас есть последовательность целых чисел. Мы должны обрабатывать элементы последовательности один за другим. Если мы встречаем «3», то обработка должна быть остановлена. Мы можем использовать цикл for для итерации и оператор break с условием if, чтобы реализовать это.

t_ints = (1, 2, 3, 4, 5) for i in t_ints: if i == 3: break print(f'Processing ') print("Done")

break с циклом for

2. Оператор break с циклом while

count = 10 while count > 0: print(count) if count == 5: break count -= 1

Оператор break с циклом while

3. С вложенным циклом

Вот пример оператора break во вложенном цикле.

list_of_tuples = [(1, 2), (3, 4), (5, 6)] for t in list_of_tuples: for i in t: if i == 3: break print(f'Processing ')

пример с вложенным циклом

Однако Python не поддерживает помеченный оператор break. Он был убран, потому что это добавит ненужной сложности языку. Для этого сценария есть лучшая альтернатива — переместите код в функцию и добавьте оператор return.

Источник

Оцените статью