# Listen erstellen
In Python kann man ganz einfach eine Liste erstellen. Dazu schreibt man mehrere Werte durch Komma getrennt in eine eckige Klammer:
grundfarben = ["red", "green", "blue"]
radien = [2, 4, 8, 16, 32, 64, 128, 256]
2
Die Liste kann einer Variablen zugewiesen werden. Mit dem Unterprogramm len
kann die Länge einer als Argument übergebenen Liste berechnet werden:
radien = [2, 4, 8, 16, 32, 64, 128, 256]
laenge = len(radien)
print("Die Liste hat", laenge, "Elemente")
2
3
# for in
-Schleife
Wir können nun diese Listen «abarbeiten». Die Idee ist, dass wir ein Element nach dem anderen nehmen und damit jeweils etwas anstellen.
# Syntax
for element in liste:
mache_etwas_mit(element)
mach_weiter()
2
3
4
liste
- Die Liste aus welcher die Elemente genommen werden sollen.
element
- Der Name unter welchem auf das jeweilige Element zugegriffen werden kann.
mache_etwas_mit(element)
- Dieser Code-Block (eingerückt) wird für jedes Element ausgeführt.
mach_weiter()
- Hier geht die Sequenz weiter nachdem alle Listen-Elemente abgearbeitet wurden.
# Beispiel Farben
Z.B. könnten wir die Elemente der Liste grundfarben
verwenden um 3 verschieden-farbige Kreise zu zeichnen:
import turtle
grundfarben = ["red", "green", "blue"]
for farbe in grundfarben:
turtle.pencolor(farbe)
turtle.circle(100)
turtle.right(120)
2
3
4
5
6
7
8
Aufgabe «Farben»
- Erstelle ein neues Python-Skript
farben.py
. - Übernimm das obige Beispiel und starte es.
- Was geschieht, wenn du der Liste eine vierte Farbe hinzufügst?
- Wie könntest du das Ganze wieder symmetrischer darstellen?
- Findest du eine Möglichkeit, eine beliebige Anzahl Kreise schön verteilt zu zeichnen?
Tipp «Farben»
Die letzte Drehung (auf Zeile 11) stellt sicher, dass wir ein Mal rund herum sind, nachdem wir alle Kreise gezeichnet haben. Deshalb war dieser Winkel im ersten Beispiel (3 Kreise) 120° (3 * 120 = 360°). Beim Quadrat (4 Kreise) wäre er 90° (3 * 120° = 360°). Die allgemeine Formel für den Winkel wäre also:
Die Anzahl Kreise hängt von die Länge der Liste ab.
import turtle
grundfarben = ["red", "green", "blue", "yellow", "cyan", "magenta"]
turtle.speed("fast")
turtle.pensize(5)
for farbe in grundfarben:
turtle.pencolor(farbe)
turtle.circle(100)
turtle.right(360/len(grundfarben))
2
3
4
5
6
7
8
9
10
11
# Beispiel Radien
Mit der Liste radien
liessen sich verschiedengrosse Kreise zeichnen. (Eigentlich beinhaltet die Liste ja nicht Radien, sondern Zahlen. Diese können aber als Radius eines Kreises interpretiert werden.)
import turtle
radien = [2, 4, 8, 16, 32, 64, 128, 256]
for radius in radien:
turtle.circle(radius)
turtle.circle(-radius)
2
3
4
5
6
7
Für jeden Eintrag wird ein Kreis links herum und ein Kreis rechts herum gezeichnet.
Aufgabe «Kreise»
- Erstelle ein neues Python-Skript
kreise.py
. - Übernimm das obige Beispiel und starte es.
- Ändere das Skript nun so ab, dass die Kreise alle den selben Mittelpunkt haben.
Kreise
import turtle
radien = [2, 4, 8, 16, 32, 64, 128, 256]
for radius in radien:
turtle.forward(radius)
turtle.left(90)
turtle.circle(radius)
turtle.right(90)
turtle.backward(radius)
2
3
4
5
6
7
8
9
10
# Range
Wir möchten eine Spirale zeichnen. Eine Möglichkeit wäre, Teilkreise zu zeichnen mit immer grösserem Radius. Diese würden dann zu einer Spirale zusammengesetzt:
import turtle
radien = [4,6,8,10,12,14,16,18,20,22,24,26]
for radius in radien:
turtle.circle(radius, 120)
2
3
4
5
Wir zeichnen immer einen Drittelkreis (120°) und dann erhöhen wir den Radius um 2. Damit haben wir immer noch eine sehr kleine Spirale – wir müssten die Liste noch viel länger machen. Dazu gibt es aber ein Unterprogramm:
Der Befehl range
liefert eine Zahlenfolge als Liste. Angeben müssen wir nur die erste Zahl, die nächsthöhere Zahle die nicht mehr in der Liste sein soll und in wie grossen Schritten die Liste jeweils wachsen soll.
Das obige Beispiel kann also wie folgt umgeschrieben werden:
import turtle
radien = range(4, 28, 2)
for radius in radien:
turtle.circle(radius, 120)
2
3
4
5
- Zeile 3
- Mit
range
wird eine Zahlenfolge erstellt:4
ist die erste Zahl,28
kommt nicht mehr vor, es wird jeweils in2
-er-Schritten gezählt.
Aufgabe «Spirale»
- Erstelle ein neues Python-Skript
spirale.py
. - Übernimm das obige Beispiel und starte es.
- Verändere das Programm so, dass die Spirale weitergezeichnet wird und das gesammte Fenster füllt.
# Zufall
Eine verwirrte Turtle soll sich zufällig auf dem Bildschirm bewegen. Dazu verwenden wir Zufallszahlen, z.B. für den Winkel:
import turtle, random
zahlen = range(1,1000,1)
for zahl in zahlen:
winkel = random.randint(-60,60)
turtle.right(winkel)
turtle.forward(10)
2
3
4
5
6
7
random
- ein Modul mit dem Zufallszahlen generiert werden können
- muss importiert werden
randint(a,b)
- ein Unterprogramm von
random
- erzeugt eine ganze Zahl zwischen
a
undb
Aufgabe «Zufall»
Versuche zufällig grosse Kreise zu zeichnen, immer mit demselben Mittelpunkt.
Zusatzaufgabe
Kannst du auch eine Farbe zufällig wählen?