9.1 Условный цикл

Цикл for отлично подходит для ситуации, когда мы точно знаем сколько раз мы хотим выполнить блок команд нашего цикла. Но такая ситуация будет не всегда. Примерно в половине случаев блок команд нужно выполнять пока истинно некоторое условие (правило).

Именно для этого в языке Python есть цикл while. Его общий вид еще проще, чем у цикла for:


while условие:
    команда1 
    команда1 
    командаN 

Цикл будет выполняться до тех пор, пока условие истинно.

Важно! Чтобы цикл не выполнялся бесконечно, нужно чтобы внутри блока команд происходило что-то, что влияет на условие. Чтобы это условие когда-то смогло стать ложным и цикл завершился.

Пример:

Пример Пояснение

count = 0
while count < 5:
    print(count)
    count += 1
Цикл выведет на экран числа 0 1 2 3 4

В цикле while бесконечно выполняются две вещи:

  • Проверяется условие.
  • Выполняется блок команд.

Если условие было истинно, то выполнится блок команд. Если вдруг условие ложно (даже если блок команд ни разу не выполнился), то цикл закончится.

Еще пример цикла while, совмещенного с вводом неизвестного количества данных пользователем:

Пример Пояснение

user_input = ""
while user_input != "exit":
    user_input = input("Введите 'exit' для выхода: ")
    print(user_input)
Цикл будет печатать на экран все данные, пока пользователь не введет слово exit. После этого цикл напечатает его и завершится.

9.2 Оператор break

В Python оператор break используется для немедленного прекращения выполнения цикла while или цикла for. Этот оператор оказывается чрезвычайно полезным в ситуациях, когда необходимо выйти из цикла до его нормального завершения по условию.

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

Основное использование:


for num in range(10):
    if num == 5:
        break   # Прекращает цикл, как только num достигает 5
    print(num)
        

В этом примере цикл будет печатать числа от 0 до 4. Как только num достигает 5, цикл прерывается оператором break.

Применение в вечных циклах:


while True:
    response = input("Введите 'exit' для выхода: ")
    if response == 'exit':
        break              

Здесь break используется для выхода из бесконечного цикла, когда пользователь вводит 'exit'.

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

Например, в задачах поиска или сортировки, где после нахождения нужного элемента дальнейшее выполнение цикла не имеет смысла:


elements = [1, 2, 3, -99, 5]
# Поиск первого отрицательного элемента
for element in elements:
    if element < 0:
        print("Найден отрицательный элемент: ", element)
        break              

Лучшие практики включают использование break с умом, чтобы не усложнять логику программы и не делать её трудной для понимания. Хорошей практикой является комментирование причин прерывания цикла, особенно если они не очевидны из контекста.

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

9.3 Оператор continue

Оператор continue в Python является мощным инструментом для управления потоком выполнения циклов. Он пропускает оставшуюся часть кода в текущей итерации цикла и переходит к следующей итерации. Этот оператор часто используется в циклах for и while для пропуска определённых условий без прерывания всего цикла.

Основы использования оператора continue

Вот как работает continue в простом цикле:


for i in range(10):
    if i % 2 == 0:
        continue
    print(i)              

В этом примере цикл выводит только нечётные числа от 1 до 9. Каждый раз, когда i оказывается чётным (делится на 2 без остатка), оператор continue срабатывает, пропуская вызов функции print() и переходя к следующей итерации.

Применение continue в реальных сценариях

Фильтрация данных: continue может использоваться для предварительной фильтрации данных перед выполнением более сложных операций в цикле.


data = ["apple", "banana", "", "cherry", "date"]
for fruit in data:
    if not fruit:
        continue  # Пропустить пустые строки
    print(fruit.capitalize())               

Пропуск специфических условий: Особенно полезен в ситуациях, где нужно пропустить определённые элементы на основе сложных условий.


    scores = [92, 85, 99, 78, 82, 100, 67, 88]
    for score in scores:
        if score < 80:
            continue  # Пропустить низкие баллы
        print("Поздравляем, ваш балл: ", score)               

Оператор continue в Python предлагает элегантный способ упростить код и сделать его более читаемым за счёт пропуска несоответствующих элементов в итерациях. Чрезмерное использование continue может усложнить понимание того, какие данные обрабатываются циклом, особенно в сложных циклах с множеством условий. Соблюдайте разумный баланс.

undefined
2
Задача
Модуль 1: Python Core, 3 уровень, 8 лекция
Недоступна
Нечетный
Нечетный
undefined
2
Задача
Модуль 1: Python Core, 3 уровень, 8 лекция
Недоступна
Считаем деньги
Считаем деньги