Управление работой циклов
Не всегда имеет смысл ждать выполнение цикла до конца, например если вы в цикле проверяли данные, и нашли искомое. Для того чтобы продолжить выполнение кода или выйти из цикла полностью есть два оператора continue и break.
Оператор continue
Если вы хотите прекратить выполнение текущего тела цикла и вернуться к точке входа, то используйте continue:
>>> for i in range(10):
... if i % 2 ==0:
... continue
... print(i)
...
1
3
5
7
9
Этот код проверяет делится ли i без остатка на 2 и если да, то прекращает выполнение текущего тела цикла и возвращает выполнение программы к началу цикла.
Оператор break
Если вы хотите полностью прекратить работу цикла и выйти из него, то воспользуйтесь оператором break.
import random
n = random.randint(0, 10)
print("Отгадайе число от 0 до 10")
while True:
x = int(input("Введите вариант: "))
if x == n:
print("Правильно!")
break
Выполнение этого кода создаст переменную n и присвоит ей случайно число от 0 до 10 и будет спрашивать пользователя до тех пор пока он не угадает число. Работу конструкции if-else мы выучим на следующем уроке.
else
Если вам надо проверить произошел ли выход из цикла досрочно с использованием break или был закончен ествественным образом то есть возможность использовать специальную else конструкцию. Она работает и с for и с while циклами. Если в процессе работы цикла произошел вызов break то она не исполнится. В некоторых случаях это может существенно сэкономить время на дополнительных проверках.
Пример использования:
s = input("Введите строку без цифр: ")
for i in s:
if i.isnumeric():
print("Стоп, найдена цифра ", i)
break
else:
print("Ввели правильно")
Задание: средняя оценка
В электронный журнал успеваемости вносятся оценки от 0 до 100 (тип int), а также примечания (тип str) преподавателя. Если студент отправился в академический отпуск, а журнал вносится пометка "академ", при этом студент все равно может посещать занятия и получать оценки.
Напишите функцию mean_mark, которая принимает список записей о студенте из журнала, и возвращает его среднюю оценку (округленную до 2 знака после точки) до ухода в академический отпуск. Обязательно используйте инструкции break и continue.
Пример:
>>> mean_mark([70 'н', 80, 'без д/з', 90, 'академ', 100, '???', 100])
80
Примечание: это задание можно решить и без инструкции continue, но ее использование может уменьшить количество блоков, сделав код немного проще для восприятия.