Übung 12 – Die while-Schleife
Ziel: Sie wiederholen Zeilen mit while, solange eine Bedingung wahr ist, und prüfen damit Eingaben. Bearbeiten Sie die Aufgaben der Reihe nach und tragen Sie Tabellen und Programme in die Reflexion zu Sitzung 4 ein. Ihre Lösung darf anders aussehen – wichtig ist, dass sie für alle Tests das Richtige ausgibt.
1. Aufbau der while-Schleife
zahl = 3
while zahl > 0:
print(zahl)
zahl = zahl - 1
print("Los!")3 2 1 Los!
Ausprobieren: Kopieren Sie den Code (Knopf „Kopieren“), führen Sie ihn aus und ändern Sie dann den Start auf zahl = 10. Lassen Sie danach die Zeile zahl = zahl - 1 weg: Die Schleife läuft endlos – stoppen Sie sie mit Strg + C.
- Wie bei
if: Bedingung, Doppelpunkt, eingerückter Block. - Vor jeder Runde prüft Python die Bedingung neu. Ist sie falsch, geht es nach dem Block weiter.
- Im Block muss sich etwas ändern, hier
zahl = zahl - 1– sonst läuft die Schleife endlos. Notbremse im Terminal: Strg + C.
2. Aufgaben
Aufgabe 1a · Eingabe prüfen Pflicht, ca. 8 Min.
Ein Spiel fragt nach einer Zahl von 1 bis 9. Wer etwas anderes eintippt, soll so lange einen Hinweis bekommen und neu gefragt werden, bis die Zahl passt.
Ihre Aufgabe
- Tragen Sie ein, wie oft das Programm bei den Eingaben jeweils nach einer Zahl fragt und welche Zahl es am Ende nimmt.
Eingaben nacheinander So oft wird gefragt (erwartet) Gewählte Zahl (erwartet) 50, 12, 79-3, 10, 1 - Schreiben Sie
auswahl.py: Es fragt mitZahl von 1 bis 9:und wiederholt die Frage mitwhile, solange die Zahl kleiner als 1 oder größer als 9 ist. - Geben Sie bei jeder falschen Zahl den Hinweis und am Ende die gewählte Zahl genau so aus:
Zahl von 1 bis 9: 0 Bitte nur 1 bis 9. Zahl von 1 bis 9: 7 Danke, Sie haben 7 gewählt.
- Testen Sie das Programm mit allen vier Zeilen aus der Tabelle.
Fertig sind Sie, wenn jede Ausgabe mit Ihrer Tabelle übereinstimmt.
Für Schnelle: Zählen Sie die Fehlversuche mit und geben Sie sie im Hinweis aus, z. B. Bitte nur 1 bis 9. (Fehlversuch 2)
Hilfen – erst öffnen, wenn Sie nicht weiterkommen (zum Öffnen anklicken):
Tipp anzeigen
Die Bedingung beschreibt den falschen Fall, denn so lange soll wiederholt werden: zahl < 1 or zahl > 9. Vergessen Sie nicht, im Block erneut zu fragen – sonst ändert sich zahl nie.
Gerüst anzeigen
Ersetzen Sie jedes ___ durch den passenden Ausdruck.
zahl = int(input("Zahl von 1 bis 9: "))
while ___:
print("Bitte nur 1 bis 9.")
zahl = ___
print(f"Danke, Sie haben {zahl} gewählt.")Lösung anzeigen
| Eingaben | So oft gefragt | Gewählte Zahl |
|---|---|---|
5 | 1 | 5 |
0, 12, 7 | 3 | 7 |
9 | 1 | 9 |
-3, 10, 1 | 3 | 1 |
zahl = int(input("Zahl von 1 bis 9: "))
while zahl < 1 or zahl > 9:
print("Bitte nur 1 bis 9.")
zahl = int(input("Zahl von 1 bis 9: "))
print(f"Danke, Sie haben {zahl} gewählt.")Zahl von 1 bis 9: 0 Bitte nur 1 bis 9. Zahl von 1 bis 9: 12 Bitte nur 1 bis 9. Zahl von 1 bis 9: 7 Danke, Sie haben 7 gewählt.
and statt or wäre die Bedingung nie wahr: Keine Zahl ist zugleich kleiner als 1 und größer als 9. Dann würde jede Eingabe akzeptiert.Für Schnelle:
zahl = int(input("Zahl von 1 bis 9: "))
fehlversuche = 0
while zahl < 1 or zahl > 9:
fehlversuche = fehlversuche + 1
print(f"Bitte nur 1 bis 9. (Fehlversuch {fehlversuche})")
zahl = int(input("Zahl von 1 bis 9: "))
print(f"Danke, Sie haben {zahl} gewählt.")Zahl von 1 bis 9: 0 Bitte nur 1 bis 9. (Fehlversuch 1) Zahl von 1 bis 9: 12 Bitte nur 1 bis 9. (Fehlversuch 2) Zahl von 1 bis 9: 7 Danke, Sie haben 7 gewählt.
Aufgabe 1b · Zahlenraten ohne Grenze Pflicht, ca. 10 Min.
In Mini-Projekt 1 hatte das Zahlenraten genau drei Versuche. Jetzt darf so lange geraten werden, bis die Zahl stimmt. Zum Testen ist die geheime Zahl fest 42.
Ihre Aufgabe
- Tragen Sie für die geheime Zahl 42 ein, was nach jedem Tipp ausgegeben werden muss.
Tipps nacheinander Ausgaben (erwartet) 50, 25, 42421, 100, 41, 43, 42 - Schreiben Sie
raten.pymit einerwhile-Schleife, die so lange nachIhr Tipp:fragt, wie der Tipp nicht die geheime Zahl ist, und nach jedem falschen TippZu klein.oderZu groß.ausgibt. - Zählen Sie die Versuche mit und geben Sie am Ende genau so aus:
Ihr Tipp: 50 Zu groß. Ihr Tipp: 42 Richtig! Sie haben 2 Versuche gebraucht.
- Testen Sie mit allen drei Zeilen der Tabelle. Ersetzen Sie danach
42durchrandom.randint(1, 100)und ergänzen Sieimport randomin der ersten Zeile.
Fertig sind Sie, wenn alle drei Tests stimmen und das Spiel danach mit einer Zufallszahl läuft.
Für Schnelle: Erlauben Sie höchstens 7 Versuche. Wer es nicht schafft, liest Leider verloren. Die Zahl war 42.
Hilfen – erst öffnen, wenn Sie nicht weiterkommen (zum Öffnen anklicken):
Tipp anzeigen
Damit die Schleife beim ersten Mal überhaupt startet, braucht tipp vorher einen Wert, der sicher falsch ist, z. B. tipp = 0. Den Zähler erhöhen Sie in jeder Runde mit versuche = versuche + 1.
Gerüst anzeigen
Ersetzen Sie jedes ___ durch den passenden Ausdruck.
geheim = 42 # zum Testen fest, später: random.randint(1, 100)
versuche = 0
tipp = 0
while ___:
tipp = int(input("Ihr Tipp: "))
versuche = ___
if tipp < geheim:
print("Zu klein.")
elif tipp > geheim:
print("Zu groß.")
print(f"Richtig! Sie haben {versuche} Versuche gebraucht.")Lösung anzeigen
geheim = 42 # zum Testen fest, später: random.randint(1, 100)
versuche = 0
tipp = 0
while tipp != geheim:
tipp = int(input("Ihr Tipp: "))
versuche = versuche + 1
if tipp < geheim:
print("Zu klein.")
elif tipp > geheim:
print("Zu groß.")
print(f"Richtig! Sie haben {versuche} Versuche gebraucht.")Ihr Tipp: 50 Zu groß. Ihr Tipp: 25 Zu klein. Ihr Tipp: 42 Richtig! Sie haben 3 Versuche gebraucht.
tipp != geheim falsch geworden ist, also beim Treffer. Ein else für „Richtig!“ in der Schleife braucht es nicht.Für Schnelle:
geheim = 42 # zum Testen fest, später: random.randint(1, 100)
versuche = 0
tipp = 0
while tipp != geheim and versuche < 7:
tipp = int(input("Ihr Tipp: "))
versuche = versuche + 1
if tipp < geheim:
print("Zu klein.")
elif tipp > geheim:
print("Zu groß.")
if tipp == geheim:
print(f"Richtig! Sie haben {versuche} Versuche gebraucht.")
else:
print(f"Leider verloren. Die Zahl war {geheim}.")Ihr Tipp: 10 Zu klein. Ihr Tipp: 20 Zu klein. Ihr Tipp: 30 Zu klein. Ihr Tipp: 40 Zu klein. Ihr Tipp: 50 Zu groß. Ihr Tipp: 45 Zu groß. Ihr Tipp: 43 Zu groß. Leider verloren. Die Zahl war 42.