In diesem Blog lernst Du, mit der Schildkröte (dem Cursor) gerade Striche zu zeichnen (vorwärts und rückwärts), die Schildkröte nach links oder rechts zu drehen und diese bei Bedarf wieder zurück in die Mitte (zur Startposition) zu schicken.
Inhaltsverzeichnis
Dieser Blog wird vom IAIP gratis zur Verfügung gestellt. Der Blog ist ein Bestandteil des Kurses K103 «Programmieren mit Turtle Graphics» und gehört zur Lektion 2, Themenblock 1 (L2T1).
Der Kurs führt dich durch die einzelnen Blogs, enthält Zusatzmaterialien, Videos, viele Aufgaben mit Lösungen und Quizze zur Lernkontrolle. Der Kurs hat eine Kursgebühr von CHF 50.- Mit dem Einschreiben zum Kurs hilfst du mit, dass solche Blogs auch zukünftig noch gratis zur Verfügung gestellt werden können.
- Im Blog hat es ergänzende Hinweise für Kursteilnehmer, jeweils in roter Farbe:
- Aufgaben zum Einüben und zur Veranschaulichung des Gesagten.
- Zusatzmaterialien zur Lektion oder zum Themenblock (in der Regel für jüngere Kursteilnehmer)
Einordnung
In diesem und den zwei folgenden Themenblöcken bzw. Blogbeiträgen (K103: Kreise, Teilkreise, Polygone und K103: Punkte und Stempel) werden wir das Zeichnen von Geraden (gerade Linien), Kreisen bzw. Teilkreisen und «Punkten» und «Stempeln» erläutert. Mit diesen Elementen haben wir dann das Rüstzeug, um beliebige, zusammenhängende Figuren (geometrische Formen) zu zeichnen.
Vorwärts und Rückwärtsbewegung
Beginnen wir von vorne. Betrachten wir zum Einstieg ein kleines Beispielprogramm:
from turtle import * forward(100) back(50) exitonclick()
Das Programm führt bei Ausführung zu folgender Ausgabe:

Uns interessieren hier die Zeilen 3 und 4 des Programms. Beim Start des Programms zeigt die Turtle nach rechts (nach Osten). Die Anweisung forward(100) aus Zeile 3 bewegt unsere Turtle um 100 Schritte (Pixel) nach vorne bzw. nach rechts. Nach Ausführung dieser Anweisung wird die nächste Anweisung übersetzt (Zeile 4). In unserem Beispiel bewegt sich die Schildkröte 50 Schritte zurück. Sie läuft bis zur Mitte des Strichs zurück.
Ein kleiner Hinweis:
Du solltest das Programm auf deinem Computer selber eingeben und ausführen lassen. So lernst du am schnellsten. Du kannst die einzelnen Zeilen des Codes einfach abtippen, oder aber auch markieren, mit CTRL+C kopieren und mit CTRL+V bei dir im Editor wieder einfügen.
Die Anweisung forward(distanz) (von engl. «forward»: «vorwärts») bewegt unsere Schildkröte also um die in den Klammern angegebene Strecke vorwärts, und zwar in die Richtung, in welche unsere Turtle zeigt. Anstelle von forward(distanz) kann man übrigens auch die abgekürzte Form fd(distanz) verwenden. Die Anweisungen haben folgende Syntax (Schreibweise und Form):
turtle.forward(distance)
turtle.fd(distance)
Die Anweisung back(distanz) (von engl. «back»: «rückwärts») bewegt die Turtle um die in den Klammern angegebene Strecke rückwärts. Anstelle von back(distanz) kann man wiederum die abgekürzte Form bk(distanz) verwenden. Die Anweisungen haben die folgende Syntax:
turtle.back(distance)
turtle.bk(distance)
Das ist auch schon die ganze «Zauberei». Bevor wir uns mit den Anweisungen zum Drehen der Schildkröte beschäftigen, sollten noch zwei Besonderheiten zum Thema «Wert» bzw. übergebene Zahl erwähnt werden:
- Als Wert kann man eine positive Zahl (Pluszahl, wie zum Beispiel: 100) oder auch negative Zahl (Minuszahl, wie zum Beispiel: -50) angeben. Bei einer negativen Zahl fährt dann die Schildkröte einfach in die umgekehrte Richtung. forward(-100) bewegt unsere Schildkröte somit um 100 Punkte rückwärts.
- Die Distanz kann man zudem als Ganzzahl oder auch als Kommazahl angeben, wobei man zur Notation einer Kommazahlen in Python einen Punkt "." anstelle eines Kommas "," verwendet. Die Anweisung forward(10.5) bewegt den Cursor um 10,5 Punkte nach vorne.
Ein kleiner Hinweis zum Thema Syntax:
Bei der Syntax haben wir der Anweisung jeweils turtle. vorangestellt, beim Beispiel jedoch weggelassen. Das hat mit der Art des Imports (from turtle import * ) zu tun. Du kannst (und musst) hier den ersten Teil turtle. jeweils einfach weglassen. Mehr dazu später.
Bei den Erläuterungen zu einer Anweisung / einem Befehl sprechen wir oft von Lexik, Syntax und Semantik. Gemeint ist damit im Rahmen dieses Kurses nur, wie man die Befehle genau schreibt, verwendet und in welcher Reihenfolge die einzelnen Wörter kommen. Eine Sache ist hier besonders wichtig: Python braucht eine genaue Schreibweise!! Python versteht forward(100), NICHT aber Forward(100). Es unterscheidet also strikt zwischen Gross- und Kleinschreibung.
Drehen
Als Nächstes möchten wir unsere Turtle drehen. Das funktioniert ganz einfach. Im Grunde genommen müssen wir unserer Schildkröte nur sagen, in welche Richtung sie sich drehen soll und wie viel sie drehen soll. «Wie viel» bedeutet in Turtle Graphics immer «welchen Winkel», und die voreingestellte Winkeleinheit ist immer Grad.
Die Anweisung left(winkel) (von engl. «left»: «links») bzw. abgekürzt lt(winkel) dreht die Schildkröte um den in den Klammern angegebenen Winkel nach links. Die Syntax der Anweisung ist wie folgt:
turtle.left(angel)
turtle.lt(angel)
Die Anweisung right(winkel) (von engl. «right»: «rechts») bzw. abgekürzt rt(winkel) dreht die Schildkröte um den in den Klammern angegebenen Winkel nach rechts. Die Anweisung hat die folgende Syntax:
turtle.right(angel)
turtle.rt(angel)
Zur Illustration erweitern wir unser Programm wie folgt:
from turtle import * left(90) forward(100) right(90) back(50) exitonclick()
Führt man das Programm aus, so erscheint folgende Grafik:

In Zeile 3 haben wir mit dem Befehl left(90) die Schildkröte um 90° nach links gedreht. Das hat dazu geführt, dass unsere Schildkröte anschliessend (Anweisung forward(100) in Zeile 4) 100 Punkte nach oben ist.
Mit dem Befehl right(90) haben wir die Schildkröte dann um 90° nach rechts gedreht. Unsere Schildkröte ist anschliessend wiederum 50 Schritte rückwärts gelaufen und hat damit einen Strich nach links gezogen. Beachte, dass die Schildkröte immer noch nach rechts blickt.
Die voreingestellte Winkeleinheit ist immer Grad. D.h. right(90) entspricht einer Drehung um einen Viertelkreis, right(180) dreht die Schildkröte um eine halbe Umdrehung. Und der Befehl right(270) drehen die Schildkröte um einen ¾ Kreis nach rechts. right(360) macht schliesslich eine ganze Umdrehung.
- Löse nun die Aufgaben 1 bis 6, um dich mit den 4 Anweisungen forward(), back(), right() und left() vertraut zu machen.
Ergänzender Hinweis (für Fortgeschrittene):
Den Winkel kann man wiederum als Ganzzahl oder auch als Kommazahl angeben. Er wird standardmässig in Grad angegeben. Alternativ kann man das Winkelmass auch im Bogenmass angeben. Die Umstellung erfolgt über die 2 Anweisungen radians() und degrees().
turtle.right(angel)
turtle.rt(angel)
Der nachfolgende Code dreht die Turtle um einen Viertelkreis nach links und anschliessend wieder um einen Viertelkreis zurück nach rechts.
# ..... radians() left(1.5708) degrees() right(90) # .....
Zurück nach "Hause"
Es gibt eine einfache Möglichkeit, um die Schildkröte von jeder beliebigen Position aus mit nur einer Anweisung wieder direkt zurück zum Ursprung «nach Hause» (engl. «home».: «Heim, Zuhause») zu schicken. Die Anweisung hat die folgende Syntax:
turtle.home()
Nach Ausführung des Befehls befindet sich unsere Turtle wieder in der Mitte des Bildschirms (Koordinaten (0,0)) mit der ursprünglichen Startausrichtung (Blick nach rechts).
- Löse nun die Aufgaben 7 und 8, um dich mit der home() Anweisung vertraut zu machen.
Ergänzender Hinweis für Fortgeschrittene:
Die Startausrichtung des Cursors ist jeweils nach rechts (man sagt auch: nach Osten). Bei der ursprünglichen Programmiersprache «Logo» war sie jedoch nach oben (nach Norden). Man kann diese Grundeinstellung über die Anweisung mode() ändern. Sie hat die folgende Syntax:
turtle.mode(mode=None)
Steht nichts (None) zwischen den Klammern, so gibt die Funktion die aktuelle Ausrichtung zurück. Schreibt man allerdings einen Wert in die Klammer, so lässt sich der Modus bzw. die Startausrichtung der Schildkröte umstellen. Möglich sind drei unterschiedliche Werte bzw. Zeichenfolgen: «standard», «logo» oder «world». An dieser Stelle interessieren uns lediglich der ersten zwei Varianten.
Mode | Ausrichtung | positiver Winkel |
---|---|---|
«standard» | nach rechts (Osten) | Gegenuhrzeigersinn |
«logo» | nach oben (Norden) | Uhrzeigersinn |
Der folgende Code stellt die Standardeinstellung «standard» auf «logo» um. Entsprechend bewegt sich unsere Turtle in Zeile 4 dann noch oben.
from turtle import * mode("logo") forward(100)
- Löse als Bonus die Aufgaben 9 und 10.
Übungsaufgaben
Nachfolgend findest Du ein paar Übungsaufgaben.
Lösungen zu den Aufgaben findest du direkt im Kurse K103 «Programmieren mit Turtle Graphics «:
Lektion 2, Themenblock 1 (L2T1).
Aufgabe 1: eine erste Übung
Versuche die rechts abgebildete Figur nachzuzeichnen. Du kannst die Längen der Strecken selber wählen.
Tipp: Du musst als erstes die Schildkröte drehen, so dass diese nach oben zeigt.

Aufgabe 2: ein Quadrat
Versuche ein Viereck mit 4 gleich langen Seiten (ein Quadrat) zu zeichnen. Die Seitenlängen betragen jeweils 200 Punkte.
Tipp: Bei einem Quadrat beträgt der Innenwinkel jeweils 90 Grad.

Aufgabe 3: Viereck zurück
Ergänze nun das Programm aus Aufgabe 2 so, dass die Schildkröte denselben Weg wieder zurück fährt!
Tipp: Man muss beim Zurückfahren in die umgekehrte Richtung drehen.

Aufgabe 4: 4 gleiche Quadrate
Versuche 4 Quadrate mit einer Seitenlänge von 100 zu zeichnen.
Hinweis: Es gibt mehrere Möglichkeiten. Man kann beispielsweise 4 kleine Quadrate aneinanderreihen, oder ein grosses Quadrat mit einem Kreuz in der Mitte zeichnen.

Aufgabe 5: ein Dreieck
Zeichne ein Dreieck! Du kannst die Längen der Seiten selber wählen.
Hinweis: Bei einem Dreieck ist die Summe der Innenwinkel jeweils 180 Grad. Im Bild rechts haben wir erst 2x gedreht.

Aufgabe 6 : eine Spirale
Zeichne die nebenstehend abgebildete Spirale. Du kannst die Längen selber wählen.

Aufgabe 7: eine Quadrat mit home()
Gegeben ist das Quadrat aus Aufgabe 2. Schreibe nun den Code so um, dass du am Ende anstelle der letzten Vorwärtsbewegung die home() Anweisung brauchst. In welche Richtung schaut die Schildkröte an Ende?
Aufgabe 8: eine Dreieck mit home()
Zeichne ein Dreieck. Die erste Strecke beträgt 150, der erste Innenwinkel (Beta) beträgt 80 Grad. Danach kommt eine Strecke von 50. Beende das Dreieck.
Aufgabe 9: ein Haus
Versuche ein Haus zu zeichnen. Die Seiten sind 100 Punkte hoch, das Dach kannst Du selber wählen. Du findest rechts eine Skizze, wie das Haus aussehen könnte.

Aufgabe 10: ein Stern
Versuche den abgebildeten Stern zu zeichnen. Die Seitenlängen kannst Du frei wählen.
Hinweis: Die Schildkröte muss sich insgesamt 2x 360 Grad drehen. Du kannst aber auch einfach ausprobieren, bis es passt.
