Інструкція 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("Закінчено")
Як це працює:
- Коли інтерпретатор зустрічає
while
, він перевіряє умову, записану після цього ключового слова - Якщо вираз повертає
True
, інтерпретатор виконує увесь блок кода - У тілі цикла виконуються певні дії: вивід значення змінної і модифікація значення змінної
- Після того, як блок буде виконано, інтерпретатор повертається знову до інструкції
while
. Знову перевіряється умова - Коли ж умовний вираз поверне
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
, то такий цикл може ніколи не завершитись, Кажуть що "у програмі відбувається зациклювання" або "програма зависає". Самостійно програма завершитись не може, її виконання можна тільки перервати примусово.