Наталья Кайда 22 декабря 2022

🐍 Самоучитель по Python для начинающих. Часть 10: Условный цикл while

Разберем особенности условного цикла: в каких случаях необходимо использовать while, как управлять работой бесконечного цикла, и когда while лучше заменить циклом for. В конце статьи – практические задания и пример простейшей игры.
🐍 Самоучитель по Python для начинающих. Часть 10: Условный цикл while

Цикл while в Python

В прошлой статье мы изучали цикл for – он используется в тех случаях, когда заранее известно количество итераций, совершаемых в цикле. Число исполнений цикла for определяется функцией range() или размером коллекции. Если диапазон значений не известен заранее, необходимо использовать другой цикл – while: он выполняется, пока не наступит определенное событие (или не выполнится необходимое условие). По этой причине цикл while называют условным. Вот пример простейшего цикла while – он выполняется, пока пользователь не введет 0:

        n = int(input())
while n != 0:
    print(n + 5)
    n = int(input())

    

Цикл while также часто называют бесконечным, поскольку он может выполняться до тех пор, пока пользователь не остановит его нажатием определенной клавиши. Бесконечные циклы можно создавать намеренно – для выполнения фонового скрипта, игры, прикладной программы. Но иногда цикл while может стать бесконечным из-за ошибки. Например, если в приведенном выше коде не указать ввод новой переменной n = int(input()) в теле цикла, while будет бесконечно выводить одно и то же значение, пока пользователь не остановит выполнение программы нажатием Ctrl + C.

Управление бесконечным циклом while в Питоне

Самый простой способ управления бесконечным циклом – использование оператора break. В приведенном ниже коде список lst генерируется случайным образом, и до начала цикла его длина неизвестна. Однако выполнение цикла можно оставить, как только список опустеет в результате многократного выполнения операции pop():

        import random
lst = [i for i in range(random.randint(5, 500))]
while True:
    if not lst:
        break
    print(lst.pop())

    

Если выполнение цикла не остановить сразу же, как только список опустеет, появится ошибка:

        IndexError: pop from empty list
    

Оператор break также помогает сократить количество итераций и прекратить выполнение программы, как только нужное решение найдено. Например, таким образом можно найти наименьший делитель числа n, отличный от 1:

        n = int(input())
i = 2
while True:
    if n % i == 0:
        break
    i += 1
print(i)

    

Помимо break, управлять бесконечным циклом можно с помощью флагов (сигнальных меток). В приведенном ниже примере программа бесконечно запрашивает у пользователя ввод любого слова, пока пользователь не введет exit. Это событие меняет статус цикла на False, и работа программы завершается:

        text = 'Введите любое слово: '
text += '\nИли введите exit для выхода: '

active = True
while active:
    message = input(text)
    if message == 'exit':
        active = False
    else: 
        print(message)

    
🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
🐍🧩 Библиотека задач по Python
Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

Пропуск итераций в цикле while

Оператор continue можно использовать для пропуска операций, если элементы не соответствуют заданным критериям. Этот код работает, пока не будет сформирован список из 5 элементов – при этом в список не включаются числа в диапазоне между 90 и 120, а также число 50:

        sp = []
while len(sp) < 5:
    num = int(input())
    if num == 50 or 90 <= num <= 120:
        continue
    sp.append(num)  
print(sp)

    

Если пользователь введет набор цифр 45 50 121 119 95 105 3 4 7, в список будут добавлены только числа, соответствующие критериям:

        [45, 121, 3, 4, 7]
    
***

Отлично! Вы освоили всю необходимую механику для работы с циклом while.

Вы знаете, как его запустить, как безопасно остановить с помощью break и флагов, и как пропускать итерации через continue. Это крепкая база.

Но настоящее мастерство — в понимании, когда и как применять этот инструмент наиболее эффективно. В полной версии урока вас ждут:

  • Продвинутые техники: вы узнаете, как использовать редкий, но мощный блок else в цикле, и в каких случаях while незаменим, а когда его лучше заменить на for.
  • Практика на реальных задачах: вы решите 10 заданий, от конвертации чисел до создания своей первой интерактивной мини-игры, чтобы закрепить материал.


Комментарии

ВАКАНСИИ

Добавить вакансию
Lead C++ Software Engineer (Gameplay)
по итогам собеседования
AppSec BP
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ