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.
| Befehl | Was 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)- Denkanstoß
Wiederhole
forward(seite)undleft(…)mit einerfor-Schleife genau ecken-mal. - Welcher Befehl hilft?
Alle Drehungen zusammen müssen genau 360 Grad ergeben: Dreh dich nach jeder Seite um 360 / ecken.
Benutze in der Funktion nur ecken und seite – keine fest eingetippten Zahlen wie 5 oder 72.
- Lückencode – ergänze die ___
import turtle t = turtle.Turtle() t.color("purple") t.pensize(3) def vieleck(ecken, seite): for _ in ___: t.forward(seite) t.left(___) vieleck(5, 100)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
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)