Jython

3. Wiederholung mit repeat / Zufallszahlen

Mit Hilfe von Wiederholschleifen können bestimmte Programmteile mehrmals ausgeführt werden. Die einfachste Wiederholschleife ist die repeat-Schleife. Python verfügt auch über while- und for--Schleifen, die aber den Variablenbegriff voraussetzen und deshalb später eingeführt werden.

Beispiel 1: Blinklicht
Ähnlich wie ein Blinklicht, soll ein roter Kreis 10-mal nacheinander angezeigt und gelöscht werden. Dazu wird zuerst ein rot gefüllter Kreis gezeichnet und während 400 Millisekunden angezeigt. Dann wird der Kreis mit einem weissen Kreis übermalt (und damit eigentlich gelöscht) und das Programm während 400 Millisekunden angehalten. Um diesen Vorgang 10-mal zu wiederholen, verwendet man den Befehl repeat 10: (der Doppelpunkt ist wichtig). Die Anweisungen, die wiederholt werden, bilden einen Schleifenblock und müssen alle gleichweit einrückt sein. Man verwendet dazu vier Leerschläge oder die Tabulator-Taste.

# Gp3a.py
from gpanel import *

makeGPanel(-10, 10, -10, 10)

repeat 10:
    setColor("red")
    fillCircle(3)
    delay(400)
    setColor("white")
    fillCircle(3)
    delay(400)
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

delay(time): das laufende Programm wird um die Zeit time (Millisekunden) angehalten. Dadurch bleibt der bestehende Zustand länger sichtbar.

Beispiel 2: Kreise an zufällig gewählten Positionen zeichnen
Zufallszahlen bilden die Basis vieler Simulationen. Sie werden mit einem Zufallsalgorithmus erzeugt, der in Python im Modul random enthalten ist.

Der Befehl randint(a, b) liefert eine ganzzahlige Zufallszahl im Bereich a bis b (beide Grenzen eingeschlossen). Beispielsweise erhält man zufällige Würfelzahlen mit randint(1, 6). Mit dem Befehl random() werden Zufallszahlen zwischen 0 (eingeschlossen) und 1 (ausgeschlossen) mit 10 Dezimalstellen erzeugt (z.B. 0.69880747453)

Im Beispiel sollen 100 kleine rote Kreise zufällig auf die Fläche des Grafikfensters verteilt werden. Zuerst wird die Position des Kreises mit zwei Zufallszahlen im Bereich 0 bis 100 festgelegt und ein Kreis gezeichnet. Mit repeat 100: wird dieser Vorgang 100-mal wiederholt.

# Gp3b.py
from gpanel import *
from random import randint

makeGPanel(0, 100, 0, 100)

setColor("red")
repeat 100:
    pos(randint(0, 100), randint(0, 100))
    fillCircle(2)
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

from random import randint importiert die Funktion randint() aus dem Modul random

 


Aufgaben: Serie 3

1)

Programmiere eine Blinkanlage, die nacheinander die Farben rot, gelb und grün wechselt und diesen Vorgang 10-mal wiederholt. Wähle eine Anzeigeperiode von 400 ms. Wenn du im repeat-Befehl die Anzahl der Wiederholungen weglässt, blinkt die Anlage so lange bis das Grafikfenster geschlossen wird.

 


2)


Verwende eine repeat-Schleife, um 200 blaue Linien zu zeichnen. Der Anfangspunkt liegt jeweils in der linken unteren Ecke, die Endpunkte sind zufällig bestimmt.


 



3)


Im nebenstehenden "Kunstwerk" sind Position und Radius der gefüllten Kreise und auch die Farben zufällig gewählt und ergeben bei jeder Programmausführung ein ganz anderes Bild.

Für die Erzeugung der Farben verwendet  du den Befehl
setColor(r, g, b), wobei die Zahlen r, g, b die rote, grüne, bzw. blaue Komponente ist (eine Zahl zwischen 0 und 255).
Zufällige Farben erhält man mit:
setColor(randint(0, 255), randint(0, 255), randint(0, 255))