Zum Inhalt springen
BetaEN
Lektion 4 von 35Python

Python · Lektion 4 · 45 Minuten

Projekt: Zeichnen mit der Turtle

Das lernst du

  • Mit der Turtle Linien, Formen und Farben zeichnen
  • Schleifen und Funktionen nutzen, um Muster zu erzeugen
  • Ein eigenes Kunstwerk programmieren und als Bild speichern

Die Schildkröte, die malen kann

Stell dir eine kleine Schildkröte auf einem Blatt Papier vor. Sie hat einen Stift am Bauch, und du gibst ihr Befehle: „Geh 100 Schritte vor“, „Dreh dich um 90 Grad nach links“. Wo sie langläuft, entsteht eine Linie. Das ist Turtle-Grafik – ein Modul, das bei jedem Python dabei ist.

Drück auf Ausführen und schau zu:

import turtle

t = turtle.Turtle()
t.shape("turtle")

t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)

Die Mitte der Fläche ist der Punkt (0, 0). Am Anfang schaut die Turtle nach rechts.

BefehlWas passiert
t.forward(100)100 Schritte vorwärts
t.back(50)50 Schritte rückwärts
t.left(90) / t.right(90)um 90 Grad drehen
t.penup() / t.pendown()Stift heben / senken
t.goto(x, y)zu einem Punkt laufen
t.circle(50)Kreis mit Radius 50
t.color("red")Farbe wählen
t.pensize(4)Strichdicke
t.speed(0)so schnell wie möglich (1 = langsam, 10 = schnell)

Schleifen sparen Arbeit

Vier Mal das Gleiche? Das schreit nach einer Schleife. Und mit einer Liste von Farben wird es bunt – die eckigen Klammern […] sind eine Liste, mehr dazu gleich in der nächsten Lektion. Die for-Schleife holt sich daraus eine Farbe nach der anderen:

import turtle

t = turtle.Turtle()
t.pensize(5)
farben = ["red", "orange", "gold", "green"]

for farbe in farben:
    t.color(farbe)
    t.forward(120)
    t.left(90)

Flächen füllen

Zwischen begin_fill() und end_fill() merkt sich die Turtle ihren Weg und malt die Fläche danach aus:

import turtle

t = turtle.Turtle()
t.color("darkviolet", "violet")  # Stiftfarbe, Füllfarbe

t.begin_fill()
for _ in range(5):
    t.forward(150)
    t.right(144)
t.end_fill()

Warum 144 Grad? Bei einem Stern dreht sich die Turtle insgesamt zweimal im Kreis: 2 × 360 ÷ 5 = 144.

Die Regenbogen-Spirale

Jetzt wird es spannend. Wenn die Strecke mit jedem Schritt etwas länger wird und der Winkel nicht ganz 90 Grad ist, entsteht eine Spirale. Die Farben kommen aus einer Liste – mit % fängt die Liste immer wieder von vorne an:

import turtle

turtle.bgcolor("black")
t = turtle.Turtle()
t.speed(10)
t.pensize(2)
farben = ["red", "orange", "yellow", "lime", "cyan"]

for i in range(160):
    t.color(farben[i % 5])
    t.forward(i * 1.6)
    t.left(73)

Ändere mal den Winkel auf 71, 91 oder 121 – jedes Mal kommt ein völlig anderes Bild heraus.

Eine Blume aus Kreisen

import turtle

t = turtle.Turtle()
t.speed(10)
t.pensize(2)
farben = ["deeppink", "hotpink", "orchid", "mediumpurple"]

for blatt in range(36):
    t.color(farben[blatt % 4])
    t.circle(80)
    t.left(10)

t.hideturtle()

Profi-Trick: Ein Baum, der sich selbst zeichnet

Hier greifen wir ein Stück vor – einfach ausprobieren und staunen, verstehen musst du es noch nicht. Mit def baust du dir einen eigenen Befehl (eine Funktion, dazu gibt es später eine eigene Lektion). Eine Funktion darf sich sogar selbst aufrufen (Rekursion). Ein Ast teilt sich in zwei kleinere Äste, die sich wieder teilen … So wachsen in der Natur Bäume, Farne und Schneeflocken:

import turtle

t = turtle.Turtle()
t.speed(10)
t.left(90)
t.penup()
t.goto(0, -200)
t.pendown()


def ast(laenge, dicke):
    if laenge < 8:
        return
    t.pensize(dicke)
    t.color("saddlebrown" if laenge > 30 else "forestgreen")
    t.forward(laenge)
    t.left(25)
    ast(laenge * 0.72, dicke * 0.7)
    t.right(50)
    ast(laenge * 0.72, dicke * 0.7)
    t.left(25)
    t.back(laenge)


ast(110, 10)
t.hideturtle()

Der Trick: Am Ende jedes Asts läuft die Turtle mit back(laenge) wieder zurück. So steht sie immer dort, wo der nächste Ast anfangen soll.

Tipp: Mit 💾 Bild speichern unter der Zeichnung lädst du dein Kunstwerk als PNG-Datei herunter. Und mit turtle.tracer(0) am Anfang erscheint auch ein riesiges Bild sofort.

Deine Aufgabe

Statt für jede Form eigenen Code zu schreiben, nutzt du einen eigenen Befehl, der jedes Vieleck kann: Dreieck, Quadrat, Fünfeck, Achteck … Die Zeile def vieleck(ecken, seite): ist schon vorbereitet – du schreibst nur, was eingerückt darunter passiert, und benutzt dabei ecken und seite wie Variablen. Der Trick mit dem Winkel ist immer derselbe: Nach allen Ecken hat sich die Turtle genau einmal im Kreis gedreht.

Deine Aufgabe

Jetzt bist du dran

Schreib eine Funktion vieleck(ecken, seite), die mit der Turtle t ein regelmäßiges Vieleck zeichnet: ecken gleich lange Seiten mit der Länge seite. Am Ende steht die Turtle wieder genau dort, wo sie angefangen hat. Tipp: Nach jeder Seite dreht sie sich um 360 / ecken Grad. Zeichne damit ein Fünfeck mit der Seitenlänge 100.

import turtle

t = turtle.Turtle()
t.color("purple")
t.pensize(3)


def vieleck(ecken, seite):
    t.forward(seite)


vieleck(5, 100)

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:

import turtle

t = turtle.Turtle()
t.color("purple")
t.pensize(3)


def vieleck(ecken, seite):
    for _ in range(ecken):
        t.forward(seite)
        t.left(360 / ecken)


vieleck(5, 100)