At My Fingertips

Documentation

Zufall nutzen

Programmiersprache und Bibliothek

Programmiersprache

Python ist eine Programiersprache. Programmiersprachen sind eigenständig lauffähige Einheiten, Befehle können also ohne weitere Importe ausgeführt werden, alle wichtigen Befehle sind bereits vorhanden:

zahl = 27
if zahl < 20:
    print("zu klein")
else:
    print("gross genug")

Bibliothek

Für die Programmiersprache Python wurden sehr viele Bibliotheken erstellt. Eine Bibliothek, z. B. pytamaro, baut auf einer Programmiersprache auf und bietet zusätzliche Funktionen (rectangle, show_graphic) oder Konstanten (black, transparent). Für die Programmiersprache Python gibt es sehr viele öffentliche Bibliotheken wie math, turtle und numpy. Man kann auch private Bibliotheken erstellen und nutzen (wie zum Beispiel die toolbox auf dieser Webseite).

Um Konstanten (black) und Funktionen (rectangle) aus Bibliotheken zu nutzen, importiert man sie zuerst mit from someLibrary import some_function, some_constant.

from pytamaro import show_graphic, rectangle, black
breite = 27
show_graphic(rectangle(breite, breite, black))

Folgendes Programm wird einen Fehler auswerfen, da Python die Befehle und Konstanten nicht kennt.

show_graphic(triangle(200, 400, 50, black))

Erst nach dem Import kennt Python diese Befehle und Konstanten:

from pytamaro import show_graphic, triangle, black
show_graphic(triangle(200, 400, 50, black))

Im Folgenden schauen wir uns eine Bibliothek von Python genauer an:

random-Bibliothek

Die Random-Bibliothek von Python generiert pseudo-zufällige Zahlen. Aus dieser Bibliothek lernen Sie hier folgende Funktionen kennen:

Aufgaben I

Loading...
Antwortrandint(start, stop) gibt eine irgendeine Ganzzahl (int) z zurück, für die gilt: start <= z <= stop.

Der Unterstrich _ in der for-Schleife wird übrigens als Variablenname verwendet, wenn diese Schleifenvariable nicht selbst verwendet wird, sie ist nur ein Platzhalter in der for-Schleife.

Loading...
Loading...
Antwortrandom() gibt eine Gleitkommazahl float z zurück, für die gilt: 0.0 <= z < 1.0. randrange(start, stop, step) wählt eine Integer von range(start, stop, step) aus und gibt diese zurück.
Antwort
randint(a, b) == randrange(a, b+1)

Zusammenfassung

Obwohl sich der Code nicht ändert, werden nach jedem Ausführen des Programms andere Werte ausgegeben. Dabei ist die Float, die von random() ausgegeben wird, jedesmal eine andere Zahl, da ein Computer sehr viele Kommazahlen zwischen 0.0 und 1.0 darstellen kann. randrange(start, stop, step) dagegen wählt nur zwischen start + step * i < stop.

Weil es sich bei random um eine Bibliothek mit pseudo-zufälligen Zahlen handelt, ist die Zufälligkeitsreihenfolge aber wiederholbar und meist mit der in anderen Zellen oder auf anderen Geräten identisch.

Aufgaben II

  1. ... 6 Floats zwischen 0 und 1 aus, z. B. 0.03577240139897597, 0.019890852275249005, 0.6593401497301199, 0.10902821036573895, 0.2255892895788344, 0.8879708079967095
  2. ... 4 Floats zwischen 1 und 2 aus, z. B. 1.265576819795029, 1.7826829178985975, 1.7548781992778282, 1.0792465423170419,
  3. ... 7 Floats zwischen 0 und 100 aus, z. B. 43.60022228533834, 28.609874606337783, 85.40297838738724, 96.68627346397263, 32.402000969847435, 77.10247641317777, 85.8952407044595,
Loading...

Lösungen

6 Floats zwischen 0 und 1
for _ in range(6): 
    print(random(), end = ", ")
4 Floats zwischen 1 und 2
for _ in range(4): 
    print(random() + 1, end = ", ")
7 Floats zwischen 0 und 100
for _ in range(7): 
    print(random() * 100, end = ", ")
  1. ... 15 gerade Integers zwischen 0 bis inkl. 100 aus, z. B. 4, 86, 36, 64, 88, 30, 94, 20, 92, 90, 48, 100, 42, 32, 18, in zufälliger Reihenfolge.
  2. ... zufällig oft (1 bis 14 Mal) die Zeichenfolge 123_ aus, z. B. 123_123_123_123_123_123_
  3. ... zufällig oft (0 bis 100 Mal) eine zufällige Zahl zwischen -1000 und (inkl.) 1000 aus, die durch 7 teilbar ist, z. B. 497, 280, -210, -112, 987, -350, -567, 105, -98, 973, 637, -140, 700, -42, 616, 168, -21, -119, 322, 798, 854, -868, 686, 252, -966, 462, -98
Loading...

Lösungen

15 gerade Integers
for _ in range(15): 
    print(randrange(0, 101, 2), end = ", ")
123_ zufällig oft
print(randrange(1, 15) * "123_", end = "")
# or 
for _ in range(randrange(1, 15)): 
    print("123", end = ", ")
durch 7 teilbar
for _ in range(randrange(101)): 
    print(randrange(-994, 1001, 7), end = ", ")

Colors

Um folgende Grafik herzustellen, kann man mit randrange bei jedem Schleifendurchlauf den Rotwert zufällig bestimmen.

bild

Loading...
Lösung
rotwert = randrange(256)

hsl

Loading...
Lösung
helligkeit = random()

Aufgaben III

Achtung: Für diese Aufgaben ist Wissen zu Funktionen notwendig.

rotation

Lösung
# Ersetzen Sie den letzten Befehl im *Schleifenkörper* 
# mit folgendem Zweizeiler: 
rotation = randrange(60)
reihe = beside(reihe, rotate(rotation, stern))

# Ersetzen Sie den *Aufruf* zudem mit folgendem Dreizeiler: 
zfr = zufaellige_sterne(500, 4)
zfr_1 = zufaellige_sterne(500, 4)
show_graphic(above(zfr, zfr_1))

image.png

Gehen Sie zur Aktivität Sternenhimmel um zu sehen, wie das geht.

Weitere PyTamaro Anwendungsbereiche

Mit Zufallszahlen kann man viele Grafiken natürlicher oder spannender aussehen lassen. So können Sie z. B.

  • eine Wiese mit verschieden grossen Grashalmen erstellen, ohne dass es zu regelmässig aussieht oder zu stark variiert.
  • Blumen in verschiedenen Farben und Schattierungen verwenden.
  • einen Himmel mit zufällig vielen und zufällig platzierten Sternen bedecken.
  • Sie können eine Figur zufällig schnell bewegen/ animieren.
  • Sie können zufällig auswählen, ob ein Kreis, Quadrat, Dreieck, ... gezeichnet wird.
  • etc.

Toolbox

Fügen Sie ausgewählte Funktionen der Toolbox hinzu, falls Sie die Toolbox schon kennen.

Was Sie gelernt und geübt haben

Allgemein

  • Sie können bestehende Programme sinnvoll abändern und erweitern.
  • Sie können Probleme lösen, indem Sie diese in Teilprobleme zerlegen.
  • Sie können Datentypen sinnvoll einsetzen.
  • Sie können Funktionen in Ihre eigene Bibliothek aufnehmen.

Python

  • Sie können die Funktionen random(), randint(start, stop) und randrange(start, stop, step) aus der Python-Bibliothek random verwenden, um Zahlen und Grafiken mit Zufallselementen auszugeben.

PyTamaro

  • Sie können Funktionen mit zufällig gewählten Parametern erstellen. Sie verstehen, dass so (fast) nie dieselbe Grafik entsteht.

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Zufall nutzen

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)