§ 33. Алгоритми з повтореннями. Цикл із умовою
Цикл for зручно використовувати для перебору значень із відомої послідовності. Але доволі часто кількість повторень заздалегідь невідома і дії необхідно повторювати, поки виконується деяка умова. Цикл while (цикл із передумовою) повторюватиметься до тих пір, поки це потрібно.
33.1. Як працює цикл while
Цикл while («поки») буде повторюватися, поки виконується задана умова. Ця умова називається умовою циклу і повертає True або False.
Синтаксис команди:
whіle <умова>:
<тіло циклу>
Тут <умова> — логічний вираз, що є умовою виконання циклу;
<тіло циклу> — команди, які виконуються під час кожної ітерації.
Виконання команди while починається з обчислення значення логічного виразу — умови повторення циклу.
Зверніть увагу!
Якщо умова істинна, то виконуються команди тіла циклу і керування повертається на перевірку умови.
Якщо умова хибна, то виконується команда, яка є наступною після while.
Приклад 1
Для послідовного перебору цілих чисел із діапазону [0; 10) можна використовувати цикл for. Дії, які виконує цикл for, повністю відповідають while:
for i in range(10):
print(і)
i = 0
while i<10:
print(і)
i = i+1
Приклад 2
Для початкового значення х = 7 цикл while x<10 виконається тричі. Після завершення роботи циклу х = 10.
x = 7
while x<10:
x = x+1
print(x)
Якщо вже під час першої перевірки умова циклу while виявиться хибною, тіло циклу не виконається жодного разу.
Приклад 3
За початкового значення х = 10 цикл while x<5 не виконається жодного разу.
x = 10
while x<5:
x = x+1
Завдання 1
33.2. Нескінченний цикл
Приклад 4
У циклі триває побудова відрізків і поворот Черепашки на 170°, поки Черепашка не повернеться в точку (0, 0) (abs(pos())<1) (див. рисунок).
Приклад 5
Напишемо програму, у якій людина вводить із клавіатури математичний вираз і отримує обчислене значення. Для цього використаємо функцію eval(), яка опрацьовує рядок так, як це робиться в консолі Python. Цикл while працює, поки людина не введе q.
Приклад 6
Вкладник поклав 1000 грн до банку під 15 % річних. Через скільки років сума подвоїться?
Результат — на рисунку.
s = 1000
n = 0
while s<2000:
n = n+1
s = s+s*0.15 # Збільшення суми внеску на 15 %
print('s = ', round(s, 2)) # Значення s виводиться з 2 знаками після коми
print('Через ', n, ' років', round(s, 2), 'грн')
Приклад 7
Програма випробовує витримку людини — у нескінченному циклі пропонує їй розв’язати задачу (див. рисунок):
Можна зупинити виконання нескінченного циклу у вікні консолі IDLE: натиснути сполучення клавіш Ctrl + C. Після цього IDLE буде відправлений запит на зупинку програми. Можливо, доведеться натиснути Ctrl + C декілька разів, щоб IDLE зреагувала на запит.
Завдання 2
Питання для самоперевірки
Задача. Спортсмен першого дня пробіг а км. Щодня він пробігав на 10 % більше, ніж попереднього дня. Скласти програму, яка дозволить визначити:
а) скільки кілометрів пробіжить спортсмен за сьомий день;
б) через скільки днів він пробігатиме понад 20 км.
1. Завантажте програму Python → IDLE. Створіть нове вікно програми.
Збережіть файл із назвою Vprava33 у власну папку.
2. Запишіть команду введення початкового значення змінної а — відстань, яку спортсмен пробіг за перший день.
a = int(input('a = ?'))
4. Розв’яжемо задачу а).
У перший день спортсмен подолав а км. Щодня відстань збільшується на 10 %, отже, щоб визначити, скільки кілометрів пробіжить спортсмен за 7-й день, слід 6 разів повторити команду:
а = а+а*0.1
Закінчіть роботу, закривши вікно IDLE.