MINT lernen

Die while-Schleife

Zwei Sachaufgaben zur while-Schleife mit Hinweisen und Erwartungshorizont.

Dein Fortschritt:
0 / 0 Aufgaben
1

Die Wetterstation

AFB I–II

Die Wetter-AG liest ihre Temperaturwerte in ein Programm ein. Mit „ende“ wird die Eingabe beendet.

anzahl = 0summe = 0eingabe = input("Temperatur (oder ende): ")while eingabe != "ende":    summe = summe + float(eingabe)    anzahl = anzahl + 1    eingabe = input("Temperatur (oder ende): ")print("Messwerte:", anzahl)print("Mittelwert:", summe / anzahl)
  1. Nenne die Bedingung der Schleife und die Zeile, die dafür sorgt, dass die Schleife überhaupt enden kann.
  2. Bestimme die Ausgabe, wenn nacheinander 12.5, 14, 9.5 und ende eingegeben werden.
  3. Erkläre, was passiert, wenn gleich zu Beginn „ende“ eingegeben wird, und wie man das Programm absichert.

Hinweise

Hinweis zu Aufgabe a)
Welche Variable steht in der Bedingung — und wo bekommt sie einen neuen Wert?
Hinweis zu Aufgabe b)
Lege eine Tabelle mit den Spalten eingabe, summe und anzahl an.
Hinweis zu Aufgabe c)
Wie oft läuft der Rumpf in diesem Fall? Welchen Wert hat anzahl in der letzten Zeile?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)

Bedingung: eingabe != "ende". Zeile 7 (eingabe = input(…) im Rumpf) liest einen neuen Wert ein; nur dadurch kann die Bedingung falsch werden.

Erwartungshorizont zu Aufgabe b)

Der Rumpf läuft dreimal: summe = 12.5 → 26.5 → 36.0, anzahl = 1 → 2 → 3. Ausgabe:

Messwerte: 3
Mittelwert: 12.0
Erwartungshorizont zu Aufgabe c)

Die Bedingung ist schon beim ersten Prüfen falsch, der Rumpf läuft 0-mal. Dann ist anzahl = 0, und summe / anzahl führt zum ZeroDivisionError. Absicherung: die letzte Zeile durch eine Verzweigung ersetzen:

if anzahl > 0:    print("Mittelwert:", summe / anzahl)else:    print("Keine Messwerte eingegeben.")
2

Training für den Halbmarathon

AFB II–III

Jonas läuft im Sportverein. In der ersten Woche schafft er 3 km am Stück, danach will er jede Woche 1,5 km mehr laufen. Sein Ziel ist der Halbmarathon mit 21 km.

  1. Implementiere ein Programm, das Start-Strecke und wöchentliche Steigerung einliest und ausgibt, nach wie vielen Wochen erstmals mindestens 21 km erreicht werden.
  2. Überprüfe dein Programm mit den Eingaben 3 und 1.5 sowie mit 25 und 2. Gib jeweils das Ergebnis an und beurteile, ob es sinnvoll ist.
  3. Beurteile, was bei der Steigerung 0 passiert, und ergänze eine Absicherung.

Hinweise

Hinweis zu Aufgabe a)
Die Anzahl der Wochen ist vorher unbekannt — also while. Du brauchst einen Zähler.
Hinweis zu Aufgabe b)
Was passiert, wenn die Bedingung schon vor dem ersten Durchlauf falsch ist?
Hinweis zu Aufgabe c)
Ändert sich km dann noch?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
start = float(input("Start-Strecke in km: "))plus = float(input("Steigerung pro Woche in km: "))km = startwochen = 0while km < 21:    km = km + plus    wochen = wochen + 1print("Nach", wochen, "Wochen läufst du", km, "km.")

Für Jonas (3 und 1.5):

Nach 12 Wochen läufst du 21.0 km.
Erwartungshorizont zu Aufgabe b)

3 und 1.5: 3 + 12 · 1,5 = 21, also 12 Wochen — richtig. 25 und 2: 25 < 21 ist sofort falsch, der Rumpf läuft 0-mal, Ausgabe „Nach 0 Wochen läufst du 25.0 km.“ Auch das ist sinnvoll: Wer schon 25 km schafft, braucht keine Trainingswoche mehr.

Erwartungshorizont zu Aufgabe c)

Bei Steigerung 0 bleibt km immer 3, die Bedingung km < 21 bleibt wahr — Endlosschleife, Python meldet keinen Fehler. Das Programm ist also nur für positive Steigerungen brauchbar. Absicherung direkt nach der zweiten Eingabe:

while plus <= 0:    plus = float(input("Bitte eine positive Steigerung: "))