Цикли в модулі Turtle
Малюємо багатокутники
Для малювання багатокутників пригадаємо, що сума внутрішніх кутів багатокутника (n>=4) дорівнює 360 градусів. Отже, щоб дізнатися кут багатокутника потрібно 360/n -(кількість кутів).
Вводимо кількість кутів з клавіатури
n=int(input("n="))
for i in range(n):
forward(100)
right(360/n)
for i in range(4):
forward(90)
right(90)
for i in range(5):
forward(90)
right(72)
for i in range(6):
forward(90)
right(6)
for i in range(8):
forward(90)
right(45)
Малюємо зірки
Зірки, які мають більше, ніж 6 кутів можуть мати більше як одну зірчасту форму(вигляд). Для побудови зірки кути розраховуються за формулами:
1) 720/n, n- кількість вершин зірки. Формула підходить для n=5, 7,9, 11.
2) 180*(n-2)/n Формула підходить для n=8, 12, 16, 20 ( при n=14 вийде 7-кутна зірка за цією формулою).
Зірки інших зірчастих форм тут не представлені.
Зірки першої зірчастої форми
n=int(input("n="))
for i in range(n):
forward(100)
left(720/n)
for i in range(5):
forward(90)
right(144)
for i in range(7):
forward(90)
left(720/7)
for i in range(9):
forward(90)
left(80)
for i in range(11):
forward(90)
left(720/11)
Зірки другої зірчастої форми
n=int(input("n="))
k=180*(n-2)/n
for i in range (n*2):
fd(100)
left(k)
for i in range(8):
forward(90)
left(225)
for i in range (12):
fd(100)
left(150)
for i in range (16):
fd(100)
left(157.5)
for i in range (7):
fd(100)
left(154.2)
Малюємо контури зірок
for i in range (4):
forward(50)
left(144)
forward(50)
right(56)
for i in range (5):
forward(80)
left(144)
forward(80)
right(72)
for i in range (6):
forward(50)
left(120)
forward(50)
right(60)
for i in range (6):
forward(50)
left(120)
forward(95)
right(60)
for i in range (8):
forward(50)
left(225)
forward(50)
right(270)
for i in range (8):
forward(50)
left(45)
forward(50)
right(90)
Завдання 1. Створити зображення
Завдання 2. Створити зображення
Завдання 3. Створити зображення
Завдання 4. Створити зображення
Малюємо кола
color("blue")
pensize(4)
for i in range(4):
circle(90)
right(90)
color("black","blue")
pensize(4)
for i in range(4):
begin_fill()
circle(100)
end_fill()
right(90)
for i in range(10):
circle(100)
right(36)
k=['red','yellow', 'green','blue']
for i in range(10):
color(k[i% 4])
circle(100)
right(36)
Малюємо спіралі
1.Квадратна спіраль
Квадратна спіраль будується так, як і квадрат. Але кожна наступна сторона квадрата більша за попередню.
for x in range(100):
forward(x)
left(90)
for x in range(40):
forward(x+x*10)
left(90)
colors =['red','yellow','green','blue']
for x in range(100) :
color(colors[x% 4])
forward(x)
left(90)
colors =['red','yellow','green','blue']
for x in range(100) :
color(colors[x% 4])
width(x/10+1)
forward(x+x*10)
left(90)
2.Кругла спіраль
Кругла спіраль будується так, як і багатокутник. Але початкове значення першої сторони дуже мале, а кожна наступна сторона більша за попередню. Чим швидше змінюється величина кута, тим закрученіою буде спіраль.
t=0.1
kut=2
for i in range(760):
left(kut)
forward(t)
t=t+0.01
t=0.1
kut=2
for i in range(760):
left(kut*2)
forward(t)
t=t+0.01
for j in range(1,50):
forward(j*3)
backward(j*2)
right(20)
colors =['red','yellow','green','blue']
width(5)
for j in range(1,50):
color(colors[j%4])
forward(j*3)
backward(j*4)
right(20)
3. Кругова спіраль
for x in range(100):
width(x/100)
circle(x)
left(91)
colors=['red','green','orange','blue']
for x in range(300):
color(colors[x%4])
width(x/100)
circle(x)
left(90)
for x in range(200):
color(colors[x%4])
width(x/100)
circle(x/2)
left(46)
for x in range(300):
color(colors[x%4])
width(x/100)
circle(x)
left(45)
4.Багатокутні спіралі
Багатокутні спіралі будуються так, як і багатокутники. Але кожна наступна сторона багатокутника більша за попередню.
for i in range(50):
width(i/10)
forward(i*3)
right(72)
for i in range(60):
fd(i*10)
right(144)
for i in range(60):
fd(i*10)
right(225)
for i in range(60):
fd(i*2)
right(225)
fd(i*2)
left(270)
5.Перекручені спіралі
Перекручені спіралі будуються так само, як і багатокутні спіралі, але кут на один градус менший (більший) за кут відповідного багатокутника.
for x in range(200):
color(colors[x%3])
forward(2*x)
width(x*3/200)
left(121)
for x in range(150):
width(x/100)
forward(x)
left(91)
colors=['red','purple','blue']
for x in range(150):
pencolor(colors[x%3])
width(x/100+1)
forward(x)
left(59)
colors=['red','orange','yellow','green','olive','blue','fuchsia' ,'purple']
for x in range(30,150):
pencolor(colors[x%8])
width(x/100+1)
forward(x)
left(44)
from turtle import *
t=pen()
color("red", "yellow")
pensize(3)
begin_fill()
forward(200)
while abs(pos())>1:
left(170)
forward(200)