§ 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.

Оцініть свої знання