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
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
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
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
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