Python Turtle, 10 zadań dla początkujących
- Jacek Tomasiewicz
- 2 kwi 2024
- 1 minut(y) czytania
Przedstawiamy 10 zadań, w których możesz sprawdzić umiejętności rysowania w Python Turtle (grafika żółwia). W każdym zadaniu możesz podejrzeć poprawne rozwiązanie. Jeśli jeszcze nie poznałeś modułu Turtle, zachęcamy do przeczytania postu: Python Turtle, czyli grafika żółwia.
Zadanie 1: Trójkąt równoboczny ★
Napisz program, który narysuje trójkąt równoboczny taki jak na poniższym rysunku.
![]() |
Zadanie 2: Schody ★
Napisz program, który narysuje schody takie jak na poniższym rysunku.
![]() |
Zobacz rozwiązanie
from turtle import *
dlugosc = 50
kat = 90
stopnie = 5
# Obrócenie żółwia ku górze
left(90)
# Narysowanie poszczególnych stopni
for i in range(stopnie):
# Pionowa część stopnia
forward(dlugosc)
right(kat)
# Pozioma część stopnia
forward(dlugosc)
left(kat)
# Narysowanie tylnej części schodów
right(180)
forward(dlugosc * stopnie)
right(90)
forward(dlugosc * stopnie)
right(180)

Zadanie 3: Gwiazda ★
Napisz program, który narysuje gwiazdę taką jak na poniższym rysunku.
![]() |
Zobacz rozwiązanie
from turtle import *
ramiona = 8
dlugosc = 200
# Ustalenie kąta pomiędzy ramionami
kat = 360 / ramiona
# Narysowanie poszczególnych ramion
for i in range(ramiona):
forward(dlugosc)
backward(dlugosc)
right(kat)
Zadanie 4: Wielokąt ★★
Napisz program, który wczyta dwie liczby oznaczające liczbę oraz długość boków wielokąta foremnego, po czym narysuje ten wielokąt.
Zobacz rozwiązanie
from turtle import *
def wielokat_foremny(liczba_bokow, dlugosc):
# Ustalenie wewnętrznego kąta
kat = 360 / liczba_bokow
# Narysowanie poszczególnych boków
for i in range(liczba_bokow):
forward(dlugosc)
right(kat)
liczba_bokow = int(input("Podaj liczbę boków wielokąta: "))
dlugosc = int(input("Podaj długość boków wielokąta: "))
wielokat_foremny(liczba_bokow, dlugosc)
Zadanie 5: Minimalistyczny zegar ★★
Napisz program, który narysuje prosty zegar taki jak na poniższym rysunku.
Zobacz rozwiązanie
from turtle import *
promien = 100 # promień zegara
dlugosc = 30 # długość podziałki godzinowej
kat = 360 / 12 # kąt pomiędzy kolejnymi podziałkami godzinowymi
# Narysowanie podziałki godzinowej
for i in range(12):
# Przemieszczenie żółwia na koniec podziałki
penup()
forward(promien)
pendown()
# Narysowanie widocznej części podziałki
backward(dlugosc)
# Powrót na środek zegara
penup()
backward(promien - dlugosc)
pendown()
# Obrót o kąt pomiędzy podziałkami
right(kat)
Zadanie 6: Kwadraty ★★
Napisz program, który narysuje kolorowe kwadraty takie jak na poniższym rysunku.
Zobacz rozwiązanie
from turtle import *
def kwadrat(bok, kolor):
# Ustawienie koloru wypełnienia
fillcolor(kolor)
begin_fill()
# Narysowanie kwadratu
for i in range(4):
forward(bok)
left(90)
# Wypełnienie kwadratu ustalonym kolorem
end_fill()
kwadrat(300, "green")
kwadrat(250, "red")
kwadrat(200, "blue")
kwadrat(150, "yellow")
kwadrat(100, "purple")
kwadrat( 50, "orange")
Zadanie 7: Siatka graniastosłupa ★★★
Napisz program, który narysuje siatkę graniastosłupa taką jak na poniższym rysunku.
Zwróć uwagę, że przy rysowaniu powstarzających się elementów możesz wykorzystać pętle i funkcje.
Zobacz rozwiązanie
from turtle import *
def sciana(wysokosc, szerokosc, kolor):
fillcolor(kolor)
begin_fill()
for i in range(2):
forward(szerokosc)
left(90)
forward(wysokosc)
left(90)
end_fill()
def siatka(liczba_bokow, dlugosc):
kat = 360 / liczba_bokow
wysokosc_sciany = 2 * dlugosc
szerokosc_sciany = dlugosc
# Narysowanie podstawy
begin_fill()
fillcolor("purple")
for i in range(liczba_bokow):
forward(dlugosc)
right(kat)
end_fill()
# Narysowanie ścian
for i in range(liczba_bokow):
# Narysowanie aktualnej sciany
if i % 2 == 0:
sciana(wysokosc_sciany, szerokosc_sciany, "cyan")
else:
sciana(wysokosc_sciany, szerokosc_sciany, "orange")
# Przesunięcie wzdłuż boku podstawy
forward(dlugosc)
right(kat)
siatka(6, 50)
Zadanie 8: Pawie oko ★★★
Napisz program, który za pomocą kolorowych kół odwzoruje pawie oko przedstawione na poniższym rysunku.
Zobacz rozwiązanie
from turtle import *
def kolo(promien, kolor):
fillcolor(kolor)
begin_fill()
circle(promien)
end_fill()
def pawie_oko(promien, n):
kolory = ["black", "skyblue", "orange", "purple",
"yellow", "blue", "red", "green", "turquoise", "white"]
aktualny_promien = promien
# Narysowanie kół od największych do najmniejszych
for i in range(n):
aktualny_promien -= promien / n
kolo(aktualny_promien, kolory[i % len(kolory)])
pawie_oko(160, 16)
Zadanie 9: Naprzemienna spirala ★★★
Napisz program, który wczyta liczbę oznaczającą początkową długość boku, a następnie spiralę taką jak na poniższym rysunku.
Każdy bok spirali powinien być o 10 pikseli krótszy od poprzedniego.
Zobacz rozwiązanie
from turtle import *
def spirala(dlugosc):
zmiana = 10 # zmiana długości w każdym kroku
numer = 0 # numer aktualnie rysowanego odcinka
# Narysowanie spirali
while dlugosc >= 0:
if numer % 3 == 0:
pencolor("orange")
elif numer % 3 == 1:
pencolor("blue")
else:
pencolor("green")
forward(dlugosc)
left(90)
numer += 1
dlugosc -= zmiana
dlugosc = int(input("Podaj początkową długość boku spirali: "))
# Zapamiętanie początkowej pozycji
start = pos()
# Narysowanie górnej
left(90)
spirala(dlugosc)
# Powrót na początkową pozycję
penup()
goto(start)
pendown()
# Narysowanie dolnej spirali
right(90)
spirala(dlugosc)
Zadanie 10: Uśmiech ★★★
Napisz program, który narysuje uśmiech taki jak na poniższym rysunku.
Zobacz rozwiązanie
from turtle import *
def glowa(promien):
pencolor("dark red")
fillcolor("light salmon")
begin_fill()
circle(promien)
end_fill()
def usmiech(promien):
pencolor("tomato")
circle(promien, -180)
def oko(promien):
pencolor("black")
fillcolor("skyblue")
begin_fill()
circle(promien)
end_fill()
promien = 100
promien_usmiechu = promien - 30
promien_oka = promien // 4
# Zapamiętanie początkowej pozycji
start = pos()
# Narysowanie głowy
glowa(promien)
# Przemieszczenie żółwia na pozycję do rysowania uśmiechu
penup()
left(90)
forward(20)
right(90)
circle(promien_usmiechu, 90)
pendown()
# Narysowanie uśmiechu
usmiech(promien_usmiechu)
# Powrót na pozycję początkową
penup()
goto(start)
left(180)
pendown()
# Przemieszczenie żółwia na pozycję do rysowania oczu
penup()
forward(6 * promien_oka)
left(90)
pendown()
# Narysowanie lewego oka
penup()
forward(2 * promien_oka)
pendown()
oko(promien_oka)
# Narysowanie prawego oka
penup()
backward(4 * promien_oka)
pendown()
oko(promien_oka)
# Powrót na pozycję początkową
penup()
goto(start)
pendown()













