Перейти до змісту

Інструкція while

Універсальним організатором циклу в Python є інструкція while. Записується так:

while condition:
    block_of_code

Перший рядок — це заголовок інструкції. Складається з ключового слова while після якого іде булевий вираз condition і символ двокрапки.

За заголовком інструкції while йде її тіло, block_of_code. Це блок коду, який буде виконуватись циклічно.

Слово "while" з англійської мови перекладається як "доки". А увесь цикл можна пояснити словами:

доки логічний вираз має значення True, доти будуть виконуватись певні інструкції

Розглянемо приклад. Треба вивести цілі числа у діапазоні від 0 до 5 включно. Якби не існувало циклів, нам довелось би шість раз викликати функцію print():

print(0)
print(1)
...
print(5)

Спробуємо вирішіти цю задачу за допомогою цикла:

number = 0
while number <= 5:
    print(number)
    number = number + 1
print("Закінчено")

Як це працює:

  1. Коли інтерпретатор зустрічає while, він перевіряє умову, записану після цього ключового слова
  2. Якщо вираз повертає True, інтерпретатор виконує увесь блок кода
  3. У тілі цикла виконуються певні дії: вивід значення змінної і модифікація значення змінної
  4. Після того, як блок буде виконано, інтерпретатор повертається знову до інструкції while. Знову перевіряється умова
  5. Коли ж умовний вираз поверне False, почнуть виконуватись інструкції після тіла цикла, тобто print("Закінчено")

Давайте розширимо задачу. Напишемо функцію, яка буде виводити усі парні числа у певному діапазоні. Діапазон будемо задавати двома значеннями: початок і кінець. Числа будемо брати з діапазона включно початок, але не включно кінець.

def print_numbers(from_inclusive, to_exclusive):
    number = from_inclusive
    while number < to_exclusive:
        if number % 2 == 0:
            print(number)
        number = number + 1

print_numbers(0, 5

Запустивши програму отримаємо результат:

0
2
4
>>>

З циклом while можливі дві виняткові ситуації:

  • Якщо при першому заході в цикл логічний вираз поверне False, то тіло цикла не виконається жодного разу. Таку ситуацію можна вважати нормальною, адже при певних умовах логіка програми може передбачати відсутність необхідності у виконанні тіла цикла.
  • Якщо логічний вираз у заголовку цикла ніколи не поверне False, то такий цикл може ніколи не завершитись, Кажуть що "у програмі відбувається зациклювання" або "програма зависає". Самостійно програма завершитись не може, її виконання можна тільки перервати примусово.