Перейти к содержанию

Управление работой циклов

Не всегда имеет смысл ждать выполнение цикла до конца, например если вы в цикле проверяли данные, и нашли искомое. Для того чтобы продолжить выполнение кода или выйти из цикла полностью есть два оператора 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, но ее использование может уменьшить количество блоков, сделав код немного проще для восприятия.

Проверка

Загрузка тренажера...