Schau dir das folgende Video zu while-loops an und löse die darin enthaltenen kleinen Aufgaben!
Die Syntax von while-Schleifen ist ähnlich zu der von if-statements:
while <Ausführungsbedingung der Schleife>: Code-Block (auch Rumpf der Schleife genannt)
Der eingerückte Code-Block wird solange wieder und wieder durchgeführt, wie die Ausführungsbedingung gilt.
Die Ausführungsbedingung einer while-Schleife hängt fast immer von Variablen ab. Diese müssen am Anfang initialisiert werden (oft so, dass die Schleife mindestens einmal ausgeführt wird) und im Rumpf der Schleife so verändert werden, dass die Schleife irgendwann verlassen wird.
Vermeide Endlosschleifen! Falls das doch passiert: Abbruch der Programms im Terminal mit Ctrl+c
.
Jede for-loop kann durch eine while-loop ersetzt werden:
(1) Schreibe ein Programm mit einer while-Schleife und ohne for-Schleife, das dasselbe tut wie das folgende Programm:
for i in range(5, 20): print(i)
(2) Verändere dein Programm so, dass es von 20 beginnend abwärts mit Schrittweite 3 alle Zahlen ausgibt, die echt grösser als -7 sind.
Gib in der Python-Shell den Befehl
import random
ein (dieser importiert alle Befehle aus der random-Bibliothek) und dann
random.randint(1,6)
Um den letzten Befehl noch einige weitere Male auszuführen: Drücke die Pfeiltaste ↑
(damit bekommt man die vorige Eingabe) und dann Enter
. Wiederhole dies einige Male. Variiere die Argumente 1
und 6
im Befehl random.randint(1,6)
und bekomme so heraus, was dieser Befehl macht.
Was liefert der Befehl random.random()
?
Speichere das folgende Programm ab und ändere es so, dass der Benutzer nach jeder Additionsaufgabe gefragt wird, ob er noch eine weitere Aufgabe lösen möchte. Bei Eingabe von “n” oder “nein” soll das Programm enden, sonst (beispielsweise beim Drücken von Enter
ohne vorherige Eingabe) soll eine weitere Additionsaufgabe gestellt werden.
import random a = random.randint(-10, 10) b = random.randint(-10, 10) eingabe = int(input(f"Berechne {a} plus {b}: ")) if eingabe == a + b: print("Korrekt!") else: print(f"Falsch. Richtig wäre {a+b} gewesen.")
Bonus-Aufgabe: Wer mag, kann jedesmal abhängig von einer Zufallszahl (mit Werten 1, 2, 3 (und 4)) eine Additions-, Subtraktions- oder Multiplikationsaufgabe (oder “aufgehende” Divisionsaufgabe) stellen. (Achtung, Division durch Null vermeiden!)
Spieler A denkt sich eine (ganzzahlige) Zufallszahl zwischen 1 und 100 aus. Spieler B rät eine Zahl. Spieler A informiert ihn dann, ob er zu hoch bzw. zu tief bzw. richtig geraten hat. Spieler B wiederholt das Raten so lange, bis er die richtige Zahl herausbekommen hat.
Schreibe ein Python-Programm, so dass der Computer den Part von Spieler A übernimmt und der Benutzer den Part von Spieler B. Gib am Ende aus, wie viele Versuche Spieler B benötigt hat.
Bonus-Frage: Finde eine Rate-Strategie für B, so dass B mit möglichst wenig Fehlversuchen auskommt.
Unter dem folgenden Link ist ein Skelett eines Programms, das du verbessern sollst (Download im Ordner deiner Wahl per rechter Maustaste).
(Achtung: Das Programm enthält eine Endlosschleife! Abbruch per Ctrl+c
im Terminal.)
Wenn du das Programm in etwa verstehst, löse sofort die Aufgaben unten. Sonst schau dir das folgende Erklärvideo an:
Video zum Programm "box-steuern"
Ändere das Programm so, dass:
Bonus-Aufgaben (such dir aus, was dir gefällt):