Цикл з параметром

Повторення (цикл) — це алгоритмічна структура, за допомогою якої та сама послідовність дій виконується кілька разів. Для запису алгоритмів із повторенням (циклів) мовою Python використовують 2 види операторів циклу: з параметром та з умовою. 

Серію команд, що повторюється під час виконання циклу, називають тілом циклу

Кожне виконання тіла циклу називають ітерацією.

Повторення команд 

Цикл for повторює блок команд (тіло циклу) задану кількість разів, позбавляючи необхідності декілька разів писати одні і ті самі команди. 

Синтаксис, або правила запису циклу for, виглядає наступним чином: 

for х in range(n): 

         <тіло циклу>

В першу чергу ми вказуємо ключове слово for, після чого указуємо змінну х, яка буде лічильником циклу. Ключове слово in наказує Python по черзі надати змінній x всі значення в діапазоні від 0 до n-1. Не забувайте, що комп'ютер зазвичай починає рахувати з 0, а не з 1, як люди. 

Вбудована функція range повертає безперервну зростаючу послідовність цілих чисел, які можна використовувати в якості індексів всередині циклу. Щоб дати зрозуміти комп'ютеру, які команди слід повторити, використовуються відступи. Можна зробити відступ для кожної повторюваної в тілі циклу команди, натискаючи для цього клавішу Tab у вікні нового файлу. 

Проаналізуйте зміну значень лічильника х в циклі for. Функція range(4) задає список значень [0, 1, 2, 3]. 

Для малювання трикутника ми тричі, для кожної сторони трикутника, давали Черепашці команди forward(100) і right(120). Замість цього можна повторити ці команди в циклі. 

from turtle import * 

for х in range(3): 

       forward(100) 

       right(120) 

Лічильник циклу for 

Змінна-лічильник циклу веде відлік, скільки разів повторився цикл, почергово набуваючи всіх значень з указаного діапазону.

Діапазон значень може бути заданий у вигляді текстового рядка. Лічильник почергово приймає значення літер, з яких складається указаний рядок: 

Крім рядків або числових значень змінна може містити списки. 

Список – це набір значень, розділених комами, взятий у квадратні дужки. У списках можна зберігати значення будь-якого типу, будь то числа або рядки. 

Діапазон значень може бути заданий у вигляді списку значень, взятого в квадратні дужки. Лічильник почергово приймає значення зі списку:

Якщо список значень лічильника достатньо великий, і числа в списку змінюються з певним кроком, можна застосувати функцію range з такими параметрами: range (від, до, крок).

Відлік починається зі значення «від» і завершується на 1 раніше за значення «до». 

Наприклад, функція range (2,11,3) надає змінній х значення від 2 до (11-1) з кроком 3, тому, хоча 8+3=11, значення 11 вже до діапазону значень не входить. 

Якщо потрібно вести зворотній відлік (в бік зменшення значень), укажіть значення «від» більшим, ніж значення «до», а «крок» повинний бути від’ємним: 

Використання циклу for для створення малюнків 

Проаналізуємо виконання програми: 

from turtle import * 

for x in range(1,100,2): 

         forward(x) 

         left(90) 

При кожному проході циклу Черепашка малює лінію довжиною х пікселів і повертається вліво на 90°. Ви знаєте з курсу математики, що навколо точки можна виконати повний поворот на 360°. Таким чином, за 4 ітерації циклу Черепашка повертається до початкового напрямку (4*90°=360°). Програма малює спіраль, тому що кожний відрізок на 2 пікселі довший за попередній: перший відрізок має довжину 1 піксель, другий – 3, останній (50-й) – 99. Поворот на 90° створює квадратну спіраль. 

Змінимо кут повороту на 2°: left(92). Зміна всього лише 1 числа призводить до значних змін у вигляді спіралі. 

Змінимо команду forward(x) на circle(x), яка малює коло радіусу х з поточної позиції. 

for x in range(1,100,2) : 

    circle(x) 

    left(90)  

Отримаємо 4 набори  кіл, тому що після малювання кожного кола Черепашка повертається вліво на  90° (рис.31.3). Щоб намалювати n кіл, потрібно повертати Черепашку на 360°/n градусів. Внесемо такі зміни до програми, щоб Черепашка малювала 6 наборів кіл (360°/6=60°): 

   for x in range(1,100,2) : 

          circle(x) 

         left(60) 

Як зробити наші спіралі різнокольоровими? 

Для цього нам потрібен список кольорів, а не один колір, тому ми створимо змінну-список з ім'ям colors і помістимо в цей список чотири кольори: colors = ['red','yellow','green','blue'].

Зверніть увагу, що ми помістили список кольорів у квадратні дужки. Звернутися до значення зі списку з номером х можна як до colors[x]. 

Наприклад, colors[0] ='red', colors[3] ='blue'. 

Складне питання: як змусити черепашку при кожній ітерації циклу, коли х змінюється від 1 до 99, обирати одне з 4-х значень списку? Використаємо операцію % (остача від ділення). При обчисленні виразу x % 4 ми можемо отримати 4 значення остачі (0, 1, 2, 3), що відповідає номерам кольорів в списку colors. 

Повернемось до програми малювання квадратної спіралі, але крок циклу зробимо рівним 1: 

from turtle import * 

colors = ['red','yellow','green','blue'] 

for x in range(100): 

        color(colors[x% 4]) 

       forward(x) 

       left(90) 

Таким чином, вносячи нескладні зміни до операторів малювання в тілі циклу for, ми можемо отримувати складні цікаві зображення.