§ 29. Алгоритми з повтореннями. Цикл із параметром
У мові Python для запису повторень призначений оператор циклу з параметром for.
Завдання 1
Повторення команд
У циклі з параметром блок команд (тіло циклу) повторюється задану кількість разів.
Синтаксис оператора циклу for:
for і in <послідовність>:
___ <тіло циклу>
Після ключового слова for вказуємо назву змінної (і), яка буде параметром циклу. Ключове слово in наказує почергово надати змінній і усі значення із зазначеної далі послідовності.
Рядок, що починається з for, називають заголовком циклу, а повторювані в циклі команди — тілом циклу. Команди тіла циклу записують з однаковим відступом. Кожне виконання тіла циклу називають ітерацією.
Приклад 1
Проаналізуємо зміну значень параметра і в циклі for.
for і in range(4):
print(і)
Буде виведено числа 0, 1, 2, 3.
Отже, виклик range(n) повертає послідовність цілих чисел від 0 до n–1, які почергово присвоюються змінній i. Її можна використовувати у виразах всередині циклу.
Команди тіла циклу записують з однаковим відступом.
Завдання 2
Параметр циклу for
Параметр циклу (змінна циклу) почергово набуває всіх значень з указаної послідовності і щоразу виконується тіло циклу.
Розглянемо ще деякі способи задання послідовності значень для змінної циклу.
Приклад 2
Значеннями параметра почергово стають літери зазначеного рядка.
a = 'Рядок'
for x in a:
print('–>', x)
Послідовність значень можна задати як список.
Список — це набір значень, розділених комами, взятий у квадратні дужки.
У списках можна зберігати значення будь-якого типу — числа, рядки тощо. Можна сказати, що список — це контейнер для збереження набору значень.
Приклад 3
Лічильник почергово набуває заданих зі списку.
b = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт']
for x in b:
print('–>', x)
Отримати послідовність значень від n1 до n2 з кроком k можна, викликавши range() із такими параметрами: range(n1, n2, k).
Відлік завершується на 1 раніше від значення n2. Якщо крок дорівнює 1, значення k можна не вказувати: range(n1, n2).
Приклад 4
Виклик range(2, 11, 3) надає змінній х значення від 2 до (11–1) із кроком 3, тому, хоча 8 + 3 = 11, значення 11 до послідовності значень не входить.
Завдання 3
Розглянемо приклади розв’язування задач за допомогою циклу for.
Приклад 5
Виведемо квадрати непарних чисел з проміжку від 11 до 19.
for i in range(11, 20, 2):
print(i, '**2 = ', i*i)
Цікава інформація
Віктор Михайлович Глушков — засновник Інституту кібернетики Національної академії наук України, активний учасник світового процесу становлення та розвитку обчислювальної техніки, інформатики, кібернетики. Під його керівництвом розроблено перший в Україні міні-комп’ютер «МИР-1».
Приклад 6
Уведемо з клавіатури 5 цілих чисел і визначити, скільки серед уведених чисел було парних.
Створимо змінну k, у якій зберігатимемо кількість парних чисел. Значення змінної a на кожній ітерації вводитимемо з клавіатури.
k = 0 # Початкове значення лічильника парних чисел
for i in range(5):
a = int(input(str(i)+'?')) # Уведення чергового числа
if a%2 == 0: k = k+1 # Якщо число парне, лічильник k збільшується на 1
print ("k = ", k)
Приклад 7
Написати програму, яка здійснює зворотній відлік.
import time # Модуль для роботи з часом
print("Готуємось до зльоту!")
for i in range(10, 0, –1): # Зворотній відлік
print(i)
time.sleep(1) # Затримка виведення на 1 секунду
Отже, цикл із параметром є потужним інструментом програмування, він позбавляє програміста необхідності писати однакові блоки коду кілька разів.
Питання для самоперевірки
1, Поясніть правила виконання циклу for.
2. Яких значень набуває змінна x у ході виконання циклу з таким заголовком:
for х in range(5)?
3. Яких значень набуває змінна x у ході виконання циклу з таким заголовком:
for х in range(0, 10, 2)?
4. Що буде надруковано в ході виконання циклу:
а) s = 'цикл' б) b = [1, 3, 9, 8] в) for х in range(2, 8, 2):
for х in s: for х in b: print(x) print(x*2)
print(x) print(x)
5. Чому дорівнює s після виконання циклу:
а) s = 0 б) s = 0
for a in range(5, 7): for a in range(5, 11, 2):
s = s+1 s = s+a
Вправа 29
Створити рисунки з використанням циклу for.
1. Відкрийте вікно IDLE і створіть нове вікно програми.
Збережіть файл з іменем Вправа 29.
2. Запишіть програму для побудови поданого малюнка.
from turtle import*
color('blue')
for i in range(1, 100, 2):
up()
goto(i*2, 0)
down()
circle(i)
4. Змініть параметри функції range() таким чином:
range (1, 100, 6).
5. Поставте на початку рядка goto(і*2, 0) символ #.
6. Змінюючи параметри команди goto(), ми можемо керувати взаємним розташуванням кіл, які Черепашка малює на кожній ітерації циклу.