Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Инструкция 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** убережет вас от сбоев в работе программ, вызываемых попаданием в бесконечный цикл.
Иногда необходимо проверить, был ли цикл исполнен до конца или выход произошел с использованием инструкции **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** — продолжение цикла независимо от наличия внешних условий. В готовом коде **pass** встречается нечасто, но полезен в процессе разработки и применяется в качестве «заглушки» там, где код еще не написан. Например, нам нужно не забыть добавить условие с буквой «я» из примера выше, но сам этот блок по какой-то причине мы пока не написали. Здесь для корректной работы программы и поможет заглушка **pass** :
word = input('Введите слово: ')
for i in word:
if i == 'я':
pass
else:
print('Цикл завершен, запрещенных букв не обнаружено')
print('Проверка завершена')Теперь программа запустится, а **pass** будет для нас маркером и сообщит о том, что здесь нужно не забыть добавить условие.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.