G-X3X01SGQDG

§ 30. Використання циклів
для побудови зображень


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

Завдання 1

Як намалювати багатокутник

Програмуючи малювання три-, чотири- і п’ятикутника (див. вправу 27) ви могли помітити, що в кожному випадку Черепашка, після малювання сторони, поверталася на кут 360/n градусів, де n — число кутів. Це дозволяє скласти одну програму для малювання будь-якого багатокутника.

Приклад 1

Складемо програму для малювання n-кутників.

from turtle import*
n = int(input('Скільки кутів? '))
x = int(input('Довжина сторони? '))
for і in range(n):
     forward(x)
     left(360/n)

Завдання 2

Черепашка малює візерунки

Розглянемо алгоритми малювання фігур.

for x in range(1, 100, 2):
     forward(x)
     left(90)

Під час кожної ітерації Черепашка малює лінію довжиною х пікселів і повертається вліво на 90°. Отже, за 4 ітерації циклу Черепашка повертається до початкового напрямку (4 ∙ 90° = 360°). Оскільки кожен відрізок на 2 пікселі довший за попередній, то отримуємо квадратну спіраль.

for x in range(1, 100, 2):
     forward(x)
     left(92)

Змінимо кут повороту на 2°: left(92). Це змінює вигляд спіралі.

for x in range(1, 100, 2):
     circle(x)
     left(90)

Змінено команду forward(x) на circle(x), яка малює коло радіуса х із поточної позиції. Отримаємо 4 набори кіл, оскільки після малювання кожного кола Черепашка повертається вліво на 90°.

for x in range(1, 100, 2):
     circle(x)
     left(60)

Щоб намалювати n наборів кіл, потрібно повертати Черепашку на 360/n градусів. Програму змінено так, щоб малювалося 6 наборів кіл
(360/6 = 60).

Зміна кольорів у циклі

З’ясуємо, як зробити спіралі різнокольоровими. Для цього нам знадобиться список кольорів, а не один колір.
Створимо змінну colors, в яку помістимо список із назв чотирьох кольорів:
colors = ['red', 'yellow', 'green', 'blue']
Зверніть увагу! Звернутися до значення зі списку з номером n можна як до colors[n].
Наприклад, colors[0] = 'red', colors[3] = 'blue'.

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

colors = ['red', 'yellow', 'green', 'blue']
for x in range(100):
     color(colors[x%4])
     forward(x)
     left(90)

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

Приклад 2

Збільшимо кут повороту на 2°
і змінимо товщину лінії залежно від змінної циклу.

color(colors[x%4])
forward(x)
left(360/4+2)
width(x*4/100)

Завдання 3

Питання для самоперевірки 

1. Поясніть алгоритм зміни кольору лінії при кожній ітерації циклу.
2. Яку відстань пройде Черепашка при виконання циклу:
     а) for х in range(5):                 б) for х in range(2, 10, 2):
                forward(x)                                  forward(10)
3. Визначте градусну міру кута, на який повернеться Черепашка в ході виконання циклу:
     а) for х in range(4):                б) for х in range(5, 9):
                left(20)                                       left(10)
4. Створіть список clrs, елементами якого будуть назви червоного, жовтого,
     зеленого кольорів.
5. Обговоріть алгоритм встановлення Черепашки у точку з випадковими
     координатами.
6. Як намалювати орнамент, поданий у формі зубчастої лінії?

Вправа 30

Створити програму «Зоряне небо».

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

1. Проаналізуйте алгоритм, поданий у словесній формі.

2. Відкрийте вікно IDLE і створіть нове вікно програми.
Збережіть файл з іменем Вправа 30.

3. Запишіть програмний код.

4. Додайте до списку colors ще 4 назви кольорів.
Змініть програмний код так, щоб були намальовані 100 кіл, малювання яких починається з точок із випадковими координатами в діапазоні від –200 до 200 по обох осях, а радіуси є випадковими числами в діапазоні від 5 до 50.

5. Додайте до програми команди, потрібні для того, щоб кола були зафарбовані.

6. Перевірте роботу програми. Закінчіть роботу, закривши вікно IDLE.

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