§ 31. Алгоритми
з повтореннями. Цикл із параметром
Однією з базових алгоритмічних структур є повторення (цикл) — це алгоритмічна структура, за допомогою якої та сама послідовність дій виконується кілька разів.
Завдання 1
Ви вже маєте досвід записування алгоритмів із повторенням (циклів) мовою Python за допомогою команди циклу з параметром. Згадаймо: серію команд, яка повторюється під час виконання циклу, називають тілом циклу, а кожне виконання тіла циклу — ітерацією.
31.1. Повторення команд
Пригадаємо, що ви дізналися про алгоритми з повтореннями в 5 класі.
Цикл із параметром (for) зручно використовувати, якщо відома кількість повторень. Тіло циклу повторюється стільки разів, скільки значень у заданій послідовності.
Синтаксис команди циклу for:
for і in <послідовність>:
___<тіло циклу>
Після ключового слова for указуємо назву змінної (наприклад, і), яка буде параметром. Ключове слово in наказує почергово присвоїти змінній-параметру і всі значення із зазначеної послідовності. Послідовність значень можна задати як список — набір значень, розділених комами, узятий у квадратні дужки.
Приклад 1
Виведемо почергово в консоль значення зі списку:
b = [2, 4, 6, 8, 10]
for x in b:
print('–> ', x)
Результат виконання наведено на рисунку.
Послідовність значень можна також задати у вигляді рядка. Тоді параметр циклу почергово набуде значень символів рядка.
Приклад 2
Виведемо почергово в консоль літери рядка, уведеного з клавіатури:
s = input() # Нехай уведено слово 'калина'
for i in s:
print('–> ', i)
Результат виконання наведено на рисунку.
Завдання 2
31.2. Діапазони (range)
Послідовність цілих чисел можна отримати так: range(start, stop, step). Тоді параметр циклу for набуде всіх значень у діапазоні від start до stop–1 із кроком step.
Приклад 3
Надрукувати парні числа в діапазоні від 10 до 20:
for i in range(10, 20, 2):
print(i, end = ' ')
Результат виконання — на рисунку.
Приклад 4
Приклад 5
Виведемо в консоль таблицю множення на 5.
for i in range(1, 10):
print(n, '*5 = ', n*5)
Результат виконання команди циклу наведено на рисунку.
Приклад 6
Вкладник поклав до банку 1000 грн під 15 % річних. Скільки грошей буде на його рахунку через 5 років?
s = 1000
for i in range(5):
# Збільшення суми внеску на 15 %
s = s+s*0.15
# Значення s виводиться з двома знаками після коми
print(i+1, 'рік – ', round(s, 2), 'грн.')
Результат виконання програми наведено на рисунку.
Приклад 7
Згадаймо «черепашачу» графіку. Програма малює спіраль із заданою кількістю кутів n. Під час кожної ітерації Черепашка малює лінію довжиною х пікселів і повертається вліво на 360°/n. Оскільки кожен відрізок довший за попередній на 2 пікселі, то отримуємо спіраль (див. рисунок).
from turtle import*
color('blue')
n = int(input("Скільки кутів?"))
for x in range(50):
forward(x)
left(360/n)
Таким чином, цикл for використовується у випадках, коли для певної послідовності значень потрібно повторити одні й ті самі дії.
Завдання 3
Питання для самоперевірки
1. Яких значень набуває змінна х у ході виконання циклу із заголовком? а) for х in range(5) в) for х in range(8, 0, –2) б) for х in range(2, 6)
2. Які числа будуть виведені в консоль після виконання команди? а) for i in range(8): print(i) б) for i in range(10, 0, –2): print(i)
3. Що буде надруковано в результаті виконання фрагмента програми? а) for i in range(4): print(i) print(i*2) б) b = [2, 9, 5, 8, 11] for x in b: print('–>', x)
4. Ведмедик у понеділок з’їв 200 г меду, а кожного наступного дня тижня з’їдав меду на 20 % більше, ніж попереднього. Складіть програму, яка дасть змогу визначити, скільки меду ведмедик з’їв у неділю.
1. Завантажте програму Python → IDLE. Створіть нове вікно програми.
Збережіть файл із назвою Vprava31 у власну папку.
Завантажте модуль для роботи з Черепашкою.
3. Створіть змінну colors, в яку помістіть список із назв чотирьох кольорів:
colors = ['red', 'yellow', 'green', 'blue']
Звернутися до значення зі списку з номером n можна як до colors[n], наприклад, colors[0] дорівнює 'red'.
4. Запишіть команду введення з клавіатури кількості кутів у спіралі:
n = int(input(‘Скільки кутів?’))
5. Запишіть команду циклу для малювання різноколірної спіралі, яка має n кутів і складається зі 100 відрізків. Як номер кольору в списку colors використовується значення виразу x%4 (остача від ділення x на 4), що може дорівнювати тільки 0, 1, 2, 3.
for x in range(100):
color(colors[x%4])
forward(x) # Малювання лінії довжиною х пікселів
left(360/n) # Поворот вліво на 360°/n
Виконайте програму для n = 4, 5. 6.
Ускладніть візерунок, збільшуючи кут повороту на 2° і змінюючи товщину лінії залежно від змінної циклу.
Додайте до тіла циклу команду
width(x*n/100)
Змініть кут повороту на 2°.
Закінчіть роботу, закривши вікно IDLE.