Конструкцію while мовою Python можна описати наступною схемою:
Ця схема приблизна, тому що логічний вираз в заголовку циклу while може бути більш складним, а змінюватися може змінна (або вираз) b.
Цикли — це інструкції, що виконують одну і ту ж саму послідовність дій, поки діє задана умова.
У реальному житті ми досить часто стикаємося з циклами. Наприклад, ходьба людини - цілком циклічне явище: крок лівою, крок правою, знову лівою-правою і т.д., поки не буде досягнута певна мета (наприклад, школа чи магазин). У комп'ютерних програмах поряд з інструкціями розгалуження (тобто вибором шляху дії) також існують інструкції циклів (повторення дії). Якби інструкцій циклу не існувало, довелося б багато разів вставляти в програму один і той же код підряд стільки разів, скільки потрібно виконати однакову послідовність дій.
Універсальним організатором циклу в мові програмування Python (як і в багатьох інших мовах) є конструкція while. Слово "while" з англійської мови перекладається як "доки" ("доки логічний вираз має значення True, доти будуть виконуватись певні операції").
Може виникнути питання: "Навіщо змінювати a або b?". Коли виконання програмного коду доходить до циклу while, виконується логічний вираз в заголовку, і, якщо було отримано True, виконуються вкладені вирази. Після потік виконання програми знову повертається в заголовок циклу while, і знову перевіряється умова. Якщо умова ніколи не буде змінюватись, то не буде причин зупинки циклу і програма зациклиться. Щоб цього не сталося, необхідно передбачити можливість виходу з циклу. Таким чином, змінюючи значення змінної в тілі циклу, можна довести логічний вираз до False і цикл завершиться.
Цю змінювану змінну, яка використовується в заголовку циклу while, зазвичай називають лічильником. Як і всякій змінній їй можна давати довільні імена, однак дуже часто використовують букви i та j. Найпростіший цикл на мові програмування Python може виглядати так:
str1 = "+"
i = 0
while i < 10:
print(str1)
i = i + 1
В останньому рядку коду відбувається збільшення значення змінної i на одиницю, тому з кожним колом циклу її значення збільшується. Коли буде досягнуте число 10, логічний вираз i < 10 дасть False, виконання тіла циклу буде припинено, а потік виконання програми перейде на наступні команди, що слідують після циклу. Результатом виконання вищевказаного скрипту є виведення на екран десяти знаків “+” в стовпчик. Якщо збільшувати лічильник в тілі циклу не на одиницю, а на 2, то буде виведено тільки п'ять знаків, так як цикл зробить лише п'ять обертів.
Більш складний приклад з використанням циклу:
fib1 = 0
fib2 = 1
print (fib1)
print (fib2)
n = 10
i = 0
while i < n:
fib_sum = fib1 + fib2
print(fib_sum)
fib1 = fib2
fib2 = fib_sum
i = i + 1
Цей приклад виводить числа Фібоначчі - ряд чисел, в якому кожне наступне число дорівнює сумі двох попередніх: 0, 1, 1, 2, 3, 5, 8, 13 і т.д. Скрипт виводить дванадцять членів ряду: два (0 і 1) виводяться поза циклом і десять виводяться в результаті виконання циклу.
Як це відбувається? Вводяться дві змінні (fib1 та fib2), яким присвоюються початкові значення. Присвоюються значення змінній n та лічильнику i, між якими ті чи інші математичні відносини формують бажане число витків циклу. Всередині циклу створюється змінна fib_sum, якій присвоюється сума двох попередніх членів ряду, і її ж значення виводиться на екран. Далі змінюються значення fib1 та fib2 (першому присвоюється друге, а другому - сума), а також збільшується значення лічильника.