Rozdział 10 · Trochę automatyzacji!

Mini-projekt — automatycznie rysujemy mandalę

Ta sama mandala co w rozdziale 6 — teraz etapami, krócej i czytelniej dzięki range() z trzema argumentami.

W rozdziale 6 mandala rysowana była cyklem while z manualem Zwiększanie kąta. Teraz malujmy to etapami — od jednego płatka do pełnego wzoru — Spójrzmy na rzeczywisty efekt każdego etapu.

Etap 1 — jeden motyw

circle(60) bez parametru extent rysuje pełne koło i Wraca żółwia dokładnie do punktu startowego i z oryginalnym kierunkiem:

mandala_stadiya_1.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(2)

artist.circle(60)

screen.exitonclick()
Rezultat
Mandala Jednego Kręgu
Jednym z motywów jest po prostu circle(60)

Etap 2 – Cztery motywy

mandala_stadiya_2.py
for _ in range(4):
    artist.circle(60)
    artist.left(90)
mandala_stadiya_2.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(2)

for _ in range(4):
    artist.circle(60)
    artist.left(90)

screen.exitonclick()
Rezultat
Cztery Kręgi Mandali
4 motywy obracały się względem siebie o 90°

Etap 3 – Dwanaście motywów

mandala_stadiya_3.py
for _ in range(12):
    artist.circle(60)
    artist.left(30)
mandala_stadiya_3.py
import turtle

screen = turtle.Screen()
screen.setup(width=300, height=300)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(1)

for _ in range(12):
    artist.circle(60)
    artist.left(30)

screen.exitonclick()
Rezultat
Dwanaście kręgów mandali
12 motywów obróconych o 30° to już prawdziwy wzór

Etap 4 – Pełna Mandala

mandala_polnaya.py
cvieta = ['#5B24F9', '#DB2777', '#059669']
for i in range(24):
    artist.pencolor(cvieta[i % 3])
    artist.circle(80)
    artist.left(15)
mandala_polnaya.py
import turtle

screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.speed(0)
artist.pensize(1)

cvieta = ["#5B24F9", "#DB2777", "#059669"]
for i in range(24):
    artist.pencolor(cvieta[i % 3])
    artist.circle(80)
    artist.left(15)

screen.exitonclick()
Rezultat
Pełna wielokolorowa mandala
24 motywy naprzemiennie z trzema kolorami w i% 3
range() z trzema argumentami — to samo, co ręczny while
for ugol in range(0, 360, shag_ugla): generuje dokładnie te same liczby, które otrzymywaliśmy ręcznie w rozdziale 6: while ugol < 360: ... ugol += shag_ugla. Pętla for po prostu skraca i nie ryzykuje, że zapomnisz zwiększyć licznik.
cvieta[i% 3] to pozostała część dzielenia jako indeks „pętlowany”
i % 3 daje 0, 1, 2, 0, 1, 2, ... — bez względu na to, jak duże są i, wynik reszty zawsze mieści się w zakresie indeksów listy składającej się z 3 kolorów. Ten zabieg — cykliczne przeglądanie skończonego zestawu wartości — występuje bardzo często.
★★ Zadanie samodzielne
Własna mandala

Zmień liczbę motywów (24 → 36), promień (80 → 50) oraz lista kolory, aby stworzyć własny wzór.

Praktyka: Mandala przez for + range(), etapami
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →