Don't name your turtle program “turtle.py”!
If there is any file in your python folder with this name, rename or delete it!1)
Falls es wirklich nicht in Visual Studio Code klappen sollte, hier sind etwas weniger komfortable Alternativen:
exitonclick
. Versuche “Expand”.from turtle import *
nicht …Wer ein anderes brauchbares Online-Tool findet, teile mir dies bitte mit, damit ich es in die obige Liste aufnehme.
Turtle-Grafik meint, dass man mit einer “Turtle” (alias Schildkröte), die über den Bildschirm “läuft”, eine Zeichnung anfertigt. Man kann dieser Turtle Befehle wie “Gehe 100 Pixel vorwärts!” oder “Drehe dich um 30 Grad nach rechts!” geben. Die Turtle zeichnet mit einem Stift, den sie aber auf Befehl anhebt bzw. absenkt.
(1) Das folgende Programm vermittelt dir die wichtigsten Turtle-Befehle. Lass es laufen und verstehe, was welcher Befehl bewirkt!
from turtle import * # Importiert die Turtle-Befehle speed(1) # Optionaler Befehl, setzt die Geschwindigkeit der Turtle. # Slowest animated speed ist 1; fastest animated speed is 10; # even faster is speed 0, but then the turtle "jumps" instead of moving smoothly. shape("turtle") # Optionaler Befehl, sorgt dafür, dass das zeichnende Gebilde # wie eine Schildkröte aussieht. Alternativen sind "arrow", # "circle", "square", "triangle", "classic". a = 100 forward(a) left(60) forward(a) right(120) forward(a) left(60) penup() backward(0.5 * a) pendown() left(90) pencolor("yellow") pensize(10) left(60) forward(a) right(120) forward(a) left(60) forward(a) exitonclick() # Sorgt dafür, dass das Zeichenfenster nicht sofort nach dem Zeichnen geschlossen wird, # sondern erst nach Klick an beliebiger Stelle auf das Zeichenfenster.
(2) Ändere das obige Programm so, dass das Haus des Nikolaus mit Grundseite der Länge a
gezeichnet wird (ohne Abzusetzen soll jede Linie nur einmal gezeichnet werden). Eventuell ist es einfacher, sich erst auf einem Blatt Papier die nötigen Befehle zu überlegen und dann ein neues Programm zu schreiben.
Wenn man den Wert der Variablen a
im Programm verändert, muss sich die Grösse der Zeichnung entsprechend ändern!
Das Dach soll rot gezeichnet werden, der Rest in einer anderen Farbe deiner Wahl, die Stiftdicke ist 10. Das Haus soll horizontal zentriert im Zeichenfenster erscheinen.
Verstehe das folgende Programm und schreibe dann ein neues Programm, das ein rot ausgefülltes Herz mit gelbem Rand der Dicke 10 zeichnet. Überlege dir zuerst auf einem Blatt Papier, wie du das Herz zeichnen willst.
from turtle import * speed(1) # Slowest animated speed ist 1; fastest animated speed is 10; even faster is speed 0, but the turtle jumps. shape("turtle") setheading(45) # Dreht die Turtle so, dass sie in Richtung 45 Grad schaut. (Null Grad ist horizontal nach rechts, 90 Grad vertikal nach oben.) pencolor("blue") fillcolor("green") begin_fill() # Siehe Erklärung zu end_fill() unten. forward(100) circle(50, 90) # Zeichnet "linksherum" einen Kreis mit Radius 50 (mit Mittelpunkt 50 links der Turtle). Nur 90 Grad des Kreises werden gezeichnet. forward(100) left(90) forward(200) circle(50, 180) circle(-50, 90) # Da der Radius hier negativ ist, wird der Kreis "rechtsherum" gezeichnet. end_fill() # Füllt die ab dem Befehl begin_fill() gezeichnete Form. exitonclick()
(Benötigt for- oder while-Schleife - das im Hinweis Erklärte sollte ausreichen.)
Ergänze das folgende Programm so, dass ein n
-Eck der Seitenlänge a
gezeichnet wird.
Teste dein Programm, indem du die Werte von n
und a
änderst.
from turtle import * n = 7 a = 100
(Benötigt for- oder while-Schleife - eventuell ist das Slalomtext-Programm nützlich.)
Schreibe ein Python-Programm, das eine “quadratische Spirale” mit der Turtel zeichnet: Die kleinste Seite soll a
lang sein, die Seitenlänge soll jeweils um veraenderung
wachsen und es sollen n
Strecken gezeichnet werden.
Beispielsweise soll für a = 30
, veraenderung = 10
und n = 20
die folgende Zeichnung entstehen.
Kannst du am Ende die Gesamtlänge der gezeichneten Spirale ausgeben? (im normalen Terminal per print(…)
.)
Zusatz: Ändere dein Programm so, dass die folgenden Bilder gezeichnet werden (“Sechseck-Spirale” und “leicht verdrehte” Version davon).
Es folgen 5 von der Idee her jeweils gute, aber leider syntaktisch fehlerhafte Programme zum Zeichnen der Spirale wie oben gefordert (dreimal mit for-Schleife, zweimal mit while-Schleife). Korrigiere diese Programme “im Sinne des Autors” und löse gegebenenfalls die Zusatzaufgaben!
Such dir aus den folgenden Aufgaben heraus, was dir gefällt!
Male eine nette Zeichnung deiner Wahl mit der Turtle!
(Nächstes Mal besser: Zwei Parameter, $n$ für ein $n$-Eck, auf dessen Ecken die Zacken liegen, und $m$ gibt an, wie viele Ecken man jeweils weiter geht. Drehwinkel ist $\frac{m \cdot 360^\circ}n$. (Lass einen Schüler dies für $n=5$ und $m=2$ ablaufen, andere zählen, um wieviel Grad er sich insgesamt gedreht hat.)
Zeichne einen Stern mit n
Ecken, wobei $n$ eine ungerade2) Zahl ist. Für n = 11
soll die Ausgabe wie folgt aussehen (die Füllung wird auf meinem Rechner “automatisch” so wie im Bild, auf anderen Rechnern wird einfach der gesamte Stern gefüllt).
Die Turtle bewegt sich in einem Koordinatensystem (auch wenn wir das bisher nicht benutzt haben).
Beispielsweise kann man sie mit dem Befehl goto(-100, 200)
an die Position $(-100, 200)$ bewegen.
Finde die maximalen und minimalen $x$- und $y$-Koordinaten heraus, die im Standardzeichenfenster sichtbar sind (du kannst beispielsweise ein möglichst grosses sichtbares Rechteck zeichnen).
x, y = position()
bekommt man die aktuellen Koordinaten der Turtle; per setpos(x,y)
bewegt man die Turtle auf den Punkt $(x,y)$). onkey
) Tastatursteuerung der Turtle (eine Art Malprogramm, Ändern von Dicke per “t” (alias thickness) bzw. Farbe per “c” (alias color), eventuell (Turtlebefehl) textinput(…)
verwenden.
Weitere Befehle (etwa hideturtle()
, showturtle()
, write(…)
) werden in der offiziellen Dokumentation der Turtle-Bibliothek erklärt: https://docs.python.org/3/library/turtle.html#turtle.filling
Welche Farbenwörter man verwenden darf, findet man hier: https://www.tcl.tk/man/tcl8.4/TkCmd/colors.html