# 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]
1
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")
1
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()
1
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)
1
2
3
4
5
6
7
8

Aufgabe : Farben

  1. Erstelle ein neues Python-Skript farben.py.
  2. Übernimm das obige Beispiel und starte es.
  3. Was geschieht, wenn du der Liste eine vierte Farbe hinzufügst?
  4. Wie könntest du das Ganze wieder symmetrischer darstellen?
  5. Findest du eine Möglichkeit, eine beliebige Anzahl Kreise schön verteilt zu zeichnen?
anzeigen verstecken

Lösung : 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))
1
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)
1
2
3
4
5
6
7

Für jeden Eintrag wird ein Kreis links herum und ein Kreis rechts herum gezeichnet.

Aufgabe : Kreise

  1. Erstelle ein neues Python-Skript kreise.py.
  2. Übernimm das obige Beispiel und starte es.
  3. Ändere das Skript nun so ab, dass die Kreise alle den selben Mittelpunkt haben.
anzeigen verstecken

Lösung : 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)
1
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)
1
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)
1
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 in 2-er-Schritten gezählt.

Aufgabe

  1. Erstelle ein neues Python-Skript spirale.py.
  2. Übernimm das obige Beispiel und starte es.
  3. 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)
1
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 und b

Aufgabe

Versuche zufällig grosse Kreise zu zeichnen, immer mit demselben Mittelpunkt.

Aufgabe (optional)

Kannst du auch eine Farbe zufällig wählen?

Letzte Änderung: 17.12.2019, 16:58:02