Zufall đČ
Beim Programmieren (und bei Algorithmen) haben wir die Dinge meistens gern deterministisch: Wir möchten, dass die gleiche Eingabe jedes Mal zum gleichen Ergebnis fĂŒhrt.
Manchmal kann es aber auch nĂŒtzlich oder interessant sein, wenn wir gewisse Elemente vom Zufall abhĂ€ngig machen. Dazu können wir in Python Zufallszahlen verwenden.
Schauen wir uns beispielsweise folgendes Turtle-Programm an:
from turtle import *
shape('turtle')
radius = 50
circle(radius)
Wir können dieses Programm interessanter machen, indem wir den Wert der Variable radius
nicht einfach fix auf 50
festlegen, sondern durch eine Zufallszahl ersetzen. Dazu können wir folgenden Befehl verwenden:
randint(min, max)
Hier ersetzen wir min
mit der niedrigsten und max
mit der höchsten gewĂŒnschten Zahl. So generiert folgender Befehl beispielsweise eine zufĂ€llige Ganzzahl1 zwischen 1 und 6 (wie ein WĂŒrfel):
randint(1, 6)
Und damit der Wert nicht einfach geniert und gleich wieder vergessen wird, mĂŒssen wir ihn in einer Variable speichern. Wir schreiben also beispielsweise:
meine_zufallszahl = randint(1, 6)
Aber damit wir diesen Befehl verwenden können, mĂŒssen wir zuerst das Modul random
importieren â genau so, wie wir fĂŒr Turtle-Programme immer das Modul turtle
importieren mĂŒssen. Wir schreiben dazu:
from random import *
Bisher haben wir Python nur in Zusammenhang mit der Turtle verwendet. Man kann mit Python aber natĂŒrlich auch ganz andere Dinge machen, die nichts mit zeichnenden Schildkröten zu tun haben! Das werden Sie bald selbst sehen.
Der Befehl randint(min, max)
gehört nicht zum Modul turtle
, sondern eben zum Modul random
. Er hat also eigentlich nichts mit der Turtle zu tun und kann somit auch dann verwendet werden, wenn wir mal nicht mehr mit der Turtle arbeiten.
Unser ursprĂŒngliches Turtle-Programm können wir nun wie folgt anpassen:
from turtle import *
from random import *
shape('turtle')
radius = randint(20, 100)
circle(radius)
Jedes Mal, wenn wir dieses Programm ausfĂŒhren, wird auf Zeile 6 eine neue Zufallszahl generiert. Das Programm zeichnet also einen Kreis mit einem zufĂ€llig gewĂ€hlten Radius von mindestens 20 und höchstens 100 Pixel. Das Ergebnis sieht demnach jedes Mal ein Bisschen anders aus.
Aufgabenâ
Zeichnen Sie mit der Turtle ein Quadrat, dessen SeitenlÀnge jedes Mal zufÀllige festgelegt wird. Die SeitenlÀnge soll immer mindestens 15 Pixel und höchstens 200 Pixel betragen.
Entwickeln Sie ein Programm, das ein n-Eck mit einer zufĂ€lligen Anzahl Ecken zeichnet. Es soll mindestens 3 und höchstens 20 Ecken haben. Die SeitenlĂ€nge soll fix 50 Pixel betragen. Einmal zeichnet Ihr Programm also z.B. ein FĂŒnfeck, dann einmal ein Dreieck, einmal ein 13-Eck, und so weiter...
So etwas Ăhnliches haben Sie bereits gemacht: Bei einer frĂŒheren Aufgabe mussten Sie mal ein beliebiges n-Eck zeichnen đ.
Schreiben Sie ein Turtle-Programm, das einen solchen zufÀllig generierten "Sternenhimmel" zeichnet.
Das heisst:
- schwarzer Hintergrund
- gelbe Punkte
- zufĂ€llige Anzahl Punkte, zwischen 30 und 100 StĂŒck
- zufĂ€llige Grösse fĂŒr jeden Punkt (also zufĂ€lliger Wert fĂŒr
d
im Befehldot(d)
), jeweils zwischen 5 und 15 Pixel - zufÀllige Position der Punkte im Turtle-Fenster
- Nutzen Sie den Befehl
goto(x, y)
um die Turtle an einen bestimmten Punkt im Turtle-Fenster zu bewegen. - WĂ€hlen Sie fĂŒr die - und -Position jeweils Werte zwischen und .
- Beim Befehl
randint(min, max)
sind auch negative Zahlen erlaubt. - Mit dem Befehl
speed(9)
oderspeed(0)
können Sie das Zeichnen beschleunigen.
Gehen Sie nochmal durch die bisherigen Programmieraufgaben durch und suchen Sie sich mindestens eine Turtle-Zeichnung aus, die Sie mithilfe von Zufallszahlen interessanter machen könnten.
Alternativ können Sie kreativ werden und sich ein eigenes zufÀllig generiertes Kunstwerk ausenken.
FĂŒr diese Aufgabe mĂŒssen wir ein Wenig vorgreifen: Wir können mehrere Werte zu einer sogenannten Liste zusammenfassen. In diesem Beispiel enthĂ€lt die Variable farben
eine Liste von sechs "Farben" (sechs Werte von Datentyp str
). Die Variable selbst hat in dem Fall den Datentyp list
(den Sie bisher noch nicht kennen):
farben = ['red', 'green', 'blue', 'cyan', 'magenta', 'yellow']
Wichtig sind dabei die eckigen Klammern ([...]
) und die Kommata zwischen den Werten.
Mit dem Befehl choice(liste)
(der ebenfalls im Modul random
enthalten ist) können Sie nun ein zufÀlliges Element aus einer Liste auswÀhlen.
Das folgende Programm zeichnet also ein Quadrat in einer zufÀlligen Farbe:
from turtle import *
from random import *
farben = ['red', 'green', 'blue', 'cyan', 'magenta', 'yellow']
zufaellige_farbe = choice(farben)
pencolor(zufaellige_farbe)
for i in range(4):
forward(100)
right(90)
Zeichnen Sie mit diesem Wissen nun die unten stehende Figur, die Sie in einer frĂŒheren Aufgabe schon einmal gezeichnet haben. Sorgen Sie diesmal aber dafĂŒr, dass fĂŒr jeden Punkt eine zufĂ€llige Farbe gewĂ€hlt wird. Verwenden Sie dazu eine for
-Schleife.
Es lÀsst sich dabei (vorerst) nicht vermeiden, dass ab und zu die gleiche Farbe mehrfach vorkommt.

Oben im Aufgabe 2 haben Sie ein n-Eck mit einer zufÀlligen Anzahl Seiten gezeichnet. Kopieren Sie nun dieses Programm zuerst mal unten hin.
Passen Sie es dann so an, dass alles dem Zufall ĂŒberlassen wird: also die Anzahl Seiten, die SeitenlĂ€nge und die Farbe fĂŒr jede einzelne Seite.
Jetzt haben Sie sich nochmal ein neues Werkzeug erarbeitet: Sie können zufÀllige Farben verwenden.
Werden Sie jetzt wieder kreativ: Gehen Sie durch die bisherigen Ăbungen und suchen Sie sich mindestens eine Aufgabe aus, die Sie mithilfe von zufĂ€llige gewĂ€hlten Farben interessanter gestalten könnten.
Alternativ können Sie sich auch hier stattdessen ein eigenes Kunstwerk ausdenken.
Footnotesâ
-
Dieser Befehl generiert einen Wert von Datentyp
int
(Ganzzahl). Deshalb heisst errandint(min, max)
â fĂŒr random integer: zufĂ€llige Ganzzahl. â©