Materialien zum Unterricht

Die while-Schleife

Das folgende Programm enthält einen der oben gezeigten Schleifen-Codes.
Erläutere die Funktionsweise des Codes.

Programmblock Calliope Mini Programmblock Calliope Mini


Aufgabe 1

Programmname: while_a1.py

Der im Bild gezeigte Code lässt sich auch in Python umsetzen.
Übernimm den folgenden Code in deine Datei:

zahl = 4 
while zahl > 0:
print(zahl)

Ergänze den Code mit der fehlenden Anweisung.

Lösung 1
zahl = zahl - 1
Lösung 2
zahl -= 1

Worauf muss man bei der Verwendung der while-Schleife achten?

Merkmale der while-Schleife:

Aufgabe 2

Programmname: while_a2.py

Setze den folgenden Pseudocode in ein funktionierendes Python-Programm um.

Eingabe gewünschter Zuckerstückchen im Tee
Zuckerstückchen werden hinzugegeben bis gewünschte Menge erreicht ist.
Ausgabe: Hier ist Ihr Tee mit ... Zuckerstücken
Tipp: PAP



Lösung
#Zähler anlegen
i = 0
#Variable für Anzahl Zucker anlegen und Wert zuweisen
z = int(input("Wieviele Zuckerstückchen möchten Sie im Tee?"))
#while-Schleife mit Bedingung i < z
while i < z:
    print("1 Stück Zucker wurde dem Tee hinzugegeben.")
    i += 1
print("Hier ist Ihr Tee mit" , z , "Zückerstückchen.")




Zusatz

Modifiziere deinen Code so, dass ab einer gew¨nschten Menge von 5 Zuckerstücken eine Warnung vor zu viel Zucker im Tee ausgegeben wird.
Sollte der eingegebene Wert größer als 8 sein, soll ein Spruch deiner Wahl ausgegeben werden.

Aufgabe 3

Programmname: while_a3.py

Ein Roboter soll backen lernen.
Leider fehlt ihm der Code, um zu entscheiden wieviele Esslöffel voll Wasser er dem Teig hinzugeben muss.
Ein Esslöffel fasst ca. 15 ml Wasser.
Dem Teig sollen 90 ml Wasser "zugeführt" werden.
Schreibe einen funktionierenden Programmcode, der dem Teig solange löffelweise Wasser "zuführt" (print()), bis 90 ml Wasser im Teig sind.
Lass dir am Ende die Anzahl der Löffel und die Menge an Wasser im Teig ausgeben.




Lösung
#Zähler anlegen
i = 0
#while-Schleife mit Bedingung i < 90
while i < 90:
    print("1 Löffel Wasser wurde zum Teig gegeben")
    i += 15 #1 El = 15 ml
print("Anzahl der Löffel Wasser im Teig: " , i//15)
print("Menge Wasser im Teig: " , i, "ml")



Zusatz

Modifiziere deinen Code so, dass man dem Roboter vorgeben kann wie viel Wasser er dem Teig hinzugeben soll.
Wenn man weniger als einen ganzen Esslöffel Wasser benötigt, soll abgerundet werden.


Nice-to-know: Eine besondere while()-Schleife

In einigen Programmiersprachen gibt es eine sogenannte do-while()-Schleife.

Diese gibt es nicht direkt in Python, man kann sie mit Hilfe der Schleifensteueranweisungen simulieren.

Die folgende Tabelle zeigt die Unterschiede der in Python do-while()-ähnlichen Schleife zur normalen while()-Schleife auf.

While-Schleife Do-while()-ähnliche Schleife
Aufbau
while (Bedingung):
#do Anweisungen
#änderung des Zählers
while True:
#do Anweisungen
#änderung des Zählers
if (Bedingung):
break
Ausführung Wenn die Bedingung erfüllt ist
→kopfgesteuerte Schleife
Mindestens einmal, Bedingung wird erst am Ende getestet
→fußgesteuerte Schleife
Anfangsüberprüfung Zuerst Nach dem ersten Durchlauf
Anzahl der Durchläufe Kann 0 Durchläufe haben Mindestens einen Durchlauf
Verwendung Wenn die Anzahl der Iterationen nicht im Voraus bekannt ist Wenn der Block mindestens einmal ausgeführt werden muss

Beispiel do-while()-ähnliche Schleife


Abschlussaufgabe while()

Programmname: while_fakultaet.py

Die Fakultät ist in der Mathematik eine Funktion, die einer natürlichen Zahl das Produkt aller natürlichen Zahlen (ohne Null) kleiner und gleich dieser Zahl zuordnet.
Dabei gilt:

Formel für die Fakultät

Schreibe einen Code der eine beliebige, positive natürliche Zahl einliest. Anschließend soll die Fakultät der eingelesenen Zahl berechnet und nur das Ergebnis ausgegeben werden.
Beachte auch, dass bei 0! als Ergebnis 1 angezeigt werden muss.
Das Programm sollte in der ausführung folgendermaßen aussehen:

Programm Fakultaet Programm Fakultaet



Tipp: Pseudocode
Einlesen der Nutzereingabe
Initialisierung einer Zählvariable
Initialisierung einer Variable für das Zwischenergebnis
Optional: Test ob eingegebene Zahl 0 ist.
while()-Schleife mit Bedingung:
    Zwischenergebnis als neuen Wert das Zwischenergebnis mal Zählvariable zuweisen
    Zählvariable ändern (hoch- oder runterzählen)
Ausgabe des Ergbnis nachdem die Schleife verlassen wurde
Tipp: PAP
Programmablaufplan Fakultaet
Tipp: Codefragmente 1
externer Link
Tipp: Codefragmente 2
externer Link
Tipp: Codefragmente 3
externer Link


Beispiellösung 1
Hier für Lösung klicken!
Beispiellösung 2
Hier für Lösung klicken!

Zusatz 1

Ergänze dein Programm so, dass bei der Eingabe von Zahlen kleiner als 0 eine Fehlermeldung ausgegeben wird.
Das Programm soll danach keine weiteren Anweisungen durchlaufen.

Zusatz 2

Ergänze dein Programm so, dass bei fehlerhaften Eingaben die Abfrage so oft wiederholt wird, bis eine gültige Eingabe übergeben wurde.