Цикл while

Модуль 1: Python Core
3 уровень , 8 лекция
Открыта

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

2
Задача
Модуль 1: Python Core, 3 уровень, 8 лекция
Недоступна
Нечетный
Нечетный
2
Задача
Модуль 1: Python Core, 3 уровень, 8 лекция
Недоступна
Считаем деньги
Считаем деньги
Комментарии (11)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
15 апреля 2025
Как будто сложно
14 апреля 2025
время синхронизации уменьшить бы а то 240 секунд это швах
Дмитрий Уровень 1
30 декабря 2024
Task 17 У вас это решение принимается как правильное. А в PyCharm это бесконечный цикл. count = 0 while count < 100: if count % 2 == 0: count += 1 continue print(count)
11 марта 2025
После первой итерации count так и останется 1 и не изменяется.
Mr.Robot Уровень 21 Expert
17 декабря 2024
Ох уж этот python с его приведением типов. Опять со 2-й попытки из-за невнимательности чисто )
Виктор Уровень 11
25 марта 2025
ты тигр!
Anonymous #3527253 Уровень 21
30 ноября 2024
Хреновые тестеры из javaRush не знаю как на сайте - на нем нельзя ввести текст в input() но в глючном плагине, если первое число ввести -1 он его пропустит и выведет текст, что число negative и только на втором цикле, если ввести отрицательное - прервет выполнение если же первое число положительное, будет надпись что число positive но ни куда не добавится (не ссумируется) З.Ы.: причина проблемы описана ниже, данный коммент, не справедлив
Евгений Уровень 21
4 декабря 2024
Как задачку решали? у меня нормально всё работает и проверяется.
Anonymous #3527253 Уровень 21
5 декабря 2024
там косяк pyCharm как выяснилось, видимо забыл удалить коммент в общем авто-импорт шел из другой задачи, как только используешь имя переменной, используемое ранее (исправил настройки pyCharm - проблема ушла)
Михаил Уровень 3
17 июля 2024
for num in range(10): if num == 5: break # Прекращает цикл, как только num достигает 5 print(num) А разве здесь не нужен отступ для print(num)??
Аркадий Уровень 44
1 октября 2024
Так в примере есть табуляция