top of page

Python Turtle, 10 zadań dla początkujących

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.

ree

Zobacz rozwiązanie


from turtle import *

bok = 300
kat = 180 - 60 # Obracamy się o zewnętrzny kąt

for i in range(3):
    forward(bok)
    left(kat)
 
ree

Zadanie 2: Schody ★

Napisz program, który narysuje schody takie jak na poniższym rysunku.


ree

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)
 

ree


Zadanie 3: Gwiazda ★

Napisz program, który narysuje gwiazdę taką jak na poniższym rysunku.


ree

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.

ree

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.

ree

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.


ree

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.


ree

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.


ree

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.

ree

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.

ree

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

Kursy programowania dla dzieci i młodzieży.

bottom of page