Оператор циклу з умовою. Теорія

Цикл while

Цикл while ("поки") дозволяє виконати одну і ту ж послідовність дій, поки
умова істинна. Умова записується до тіла циклу і перевіряється до виконання
тіла циклу. Як правило, цикл while використовується, коли неможливо
визначити точне значення кількості проходів виконання циклу.
Синтаксис циклу while в простому випадку виглядає так:
while умова:
 блок операторів
При виконанні циклу while спочатку перевіряється умова. Якщо вона
хибна, то виконання циклу припиняється і керування передається на наступний
оператор після тіла циклу while. Якщо умова істинна, то виконується оператор,
після чого умова перевіряється знову і знову виконується оператор. Так
продовжується до тих пір, поки умова буде істинна. Як тільки умова стане
хибною, то робота циклу завершиться і керування передасться наступному
оператору після циклу.
Наприклад, наступний фрагмент програми надрукує на екрані квадрати
всіх цілих чисел від 1 до 10. Очевидно, що цикл while може замінити цикл for ...
in range (...):
i = 1
while i <= 10:
 print (i)
 i + = 1
У цьому прикладі змінна i всередині циклу змінюється від 1 до 10. Така
змінна, значення якої змінюється з кожним новим проходом циклу, називається
лічильником. Зауважимо, що після виконання цього фрагменту значення
змінної i дорівнюватиме 11, оскільки саме при i == 11 умова i <= 10 вперше
перестане виконуватися.
Ось ще один приклад використання циклу while для визначення кількості
цифр натурального числа n:
n = int (input ())
length = 0
while n> 0:
 n //= 10
 length + = 1
У цьому циклі ми відкидаємо по одній цифрі числа, починаючи з кінця, що
еквівалентно цілочисельному поділу на 10 (n //= 10), при цьому накоплюємо у
змінній length, скільки разів це було зроблено.
У мові Пайтон, правда, є й інший спосіб вирішення цього завдання: length =
len(str (i)).

Управління циклом

Після тіла циклу можна написати слово else: і після нього блок операцій,
який буде виконано один раз після закінчення циклу, коли умова циклу стане
хибною:
i = 1
while i <= 10:
 print (i)
 i + = 1
else:
 print ('Цикл закінчено, i =', i)
Здавалося б, ніякого сенсу в цьому немає, адже цей оператор можна
просто написати після закінчення циклу. Сенс з'являється тільки разом з
оператором break, використання якої всередині циклу призводить до негайного
припинення циклу, і при цьому не виконується вітка else. Зрозуміло, оператор
break викликається тільки з оператора if, тобто він повинен виконуватися тільки
при виконанні якогось особливої умови.
Інший оператор управління циклом - continue (продовження циклу). Якщо
цей оператор зустрічається десь посередині циклу, то пропускаються всі решту
операторів до кінця циклу, і виконання циклу продовжується з наступної
ітерації.
Оператори break, continue і вітка else: можна використовувати і всередині
циклу for. Тим не менш, захоплення інструкціями break і continue не
заохочується, якщо можна без них обійтися. Ось типовий приклад поганого
використання інструкції break.
while True:
 length + = 1
 n / / = 10
 if n == 0:
 break