An den vergangenen beiden Sonnabenden haben wir uns wieder den Schildkröten-Gafiken in der Programmiersprache Python zugewandt. Wir haben Kisten, Vielecke und Kreise gezeichnet. Und dann haben wir Variablen und Zählschleifen kennengelernt und ausprobiert.
Ein verrückter Zoo
Dieses Mal benutzen wir import turtle as t
, um die Funktionen der Bibliothek „turtle“ unter dem kürzeren Namen „t“ einzubinden.
Mit ecken = 10
wird der Wert 10 in die Variable „ecken“ gespeichert. Die Variable ist wie ein Schubfach, in dem man etwas ablegen kann und später nachschauen, was gerade drin ist.
Das selbe machen wir mit zahl = 0
. Später kommt zahl = zahl + 1
. Damit nehmen wir den aktuellen Wert aus der Variable „zahl“, addieren 1 und speichern das Ergebnis wieder in der Varable „zahl“.
Die nächste Neuigkeit ist while zahl < ecken:
. Solange (while) der aktuelle Wert in „zahl“ kleiner ist als der Wert in „ecken“, wird der Befehlsblock in den folgenden Zeilen wiederholt ausgeführt.
Der Befehlsblock wird durch die Einrückung mit Leerzeichen am Zeilenanfang festgelegt. Er endet vor der Zeile die nicht mehr eingerückt ist. Im Programm ist auch ein Beispiel für eine Wiederholung innerhalb der Wiederholung.
import turtle as t
t.speed(10)
t.fillcolor("green")
ecken = 10 # Anzahl der Ecken
# der äußere Kreis
zahl = 0 # an der wievielten Ecke ich bin
while zahl < ecken:
t.forward(500/ecken)
t.left(360/ecken)
zahl = zahl + 1
# der innere Kreis
t.begin_fill()
innen = 0 # wieder auf 0 setzen
while innen < ecken:
t.forward(100/ecken)
t.left(360/ecken)
innen = innen + 1
t.end_fill()
# erste Kopie der Schildkröte
b = t.clone()
b.fillcolor("red")
b.shape("turtle")
b.right(100)
b.forward(100)
b.circle(50)
# zweite Kopie der Schildkröte
b = t.clone()
b.fillcolor("yellow")
b.shape("turtle")
b.right(130)
b.forward(100)
b.circle(50)
# die originale Schildkröte verstecken
t.hideturtle()
Schildkröten klonen
Die turtle Bibliothek erlaubt, kopien der Schildkröte anzulegen. Diese Kopie müssen wir dann in einer Variable speichern, um sie benutzen zu können. In dem obigen Beispielprogramm geschieht dies mit b = t.clone()
. Hier wird die Schildkröte aus „t“ geklont und der Klon in „b“ gespeichert. Deswegen bewegt b.forward(100)
nicht die originale Schildkröte, sondern den aktuellen Klon der in der Variable „b“ liegt.
Eigene Unterprogramme
Unterprogramme sind neue Befehle, die wir später ähnlich zu den Befehlen der Schildkröte benutzen können. Das ist sehr nützlich, wenn wir eine Befehlsfolge an verschiedenen stellen wiederverwenden wollen.
Mit def zickzack(laenge, zacken):
definieren wir ein Unterprogramm mit dem Namen „zickzack“. Es bekommt bei der Ausführung zwei Variablen namens „laenge“ und „zacken“ übergeben.
Der Inhalt des Unterprogramms ist wie bei den while-Wiederholungen ein Befehlsblock. Der Block ist durch Leerzeichen am Zeilenanfang gekennzeichnet.
Benutzen können wir das Unterprogramm zum Beispiel mit der Befehlszeile zickzack(200, 20)
. Das soll also ca. 200 Pixel weit laufen und dabei 20 Zacken machen.
import turtle as t
t.shape("turtle")
t.speed(10)
# ein eigenes Unterprogramm
def zickzack(laenge, zacken):
# innere Wiederholung
# für das Zick-Zack
t.left(30)
i = 0
while i < zacken:
# Zick
t.forward(laenge / zacken / 2)
t.right(2*30)
# Zack
t.forward(laenge / zacken / 2)
t.left(2*30)
i = i + 1
t.right(30)
# und hier benutzen wir das Unterprogramm
# 6 mal
zickzack(200, 1)
t.left(60)
zickzack(200, 2)
t.left(60)
zickzack(200, 4)
t.left(60)
zickzack(200, 8)
t.left(60)
zickzack(200, 16)
t.left(60)
zickzack(200, 31)
t.left(60)