G-X3X01SGQDG

§ 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(), ми можемо керувати взаємним розташуванням кіл, які Черепашка малює на кожній ітерації циклу.

Комп’ютерне тестування