MINT lernen

Die for-Schleife mit range

Zwei Sachaufgaben zur for-Schleife mit range mit Hinweisen und Erwartungshorizont.

Dein Fortschritt:
0 / 0 Aufgaben
1

Startnummern beim Sportfest

AFB I–II

Für den Staffellauf beim Sportfest druckt Frau Özdemir die Startnummern aus. Jede Staffel hat drei Läufer, die Nummer der Staffel ist die des ersten Läufers.

for nr in range(101, 131, 3):    print("Startnummer", nr)
  1. Gib die ersten drei und die letzte ausgegebene Startnummer an.
  2. Berechne, wie viele Staffeln es gibt, ohne alle Nummern aufzuschreiben.
  3. Vergleiche die for-Schleife mit einer while-Schleife, die dieselbe Ausgabe erzeugt.

Hinweise

Hinweis zu Aufgabe a)
Beginne bei 101 und zähle in Dreierschritten. Die 131 selbst gehört nicht mehr dazu.
Hinweis zu Aufgabe b)
Wie viele Dreierschritte passen von 101 bis 128?
Hinweis zu Aufgabe c)
Was muss man bei while selbst erledigen, was range automatisch macht?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)

Erste drei: 101, 104, 107. Letzte: 128 (131 wird nicht mehr erreicht).

Erwartungshorizont zu Aufgabe b)

(128 − 101) : 3 = 9 Schritte, also 9 + 1 = 10 Nummern — es gibt 10 Staffeln.

Erwartungshorizont zu Aufgabe c)
nr = 101while nr < 131:    print("Startnummer", nr)    nr = nr + 3

Beide liefern dieselben 10 Zeilen. Bei while muss man Startwert, Bedingung und Erhöhung selbst schreiben (drei Stellen, an denen man sich vertun kann; vergisst man nr = nr + 3, läuft die Schleife endlos). Bei for steckt alles in range(101, 131, 3). Da die Anzahl bekannt ist, ist for hier die bessere Wahl.

2

Liegestütz-Challenge

AFB II–III

Mia startet eine 14-Tage-Challenge: Am ersten Tag macht sie 5 Liegestütze, an jedem weiteren Tag 3 mehr als am Vortag.

  1. Entwickle ein Programm, das für jeden der 14 Tage die Anzahl ausgibt und am Ende die Gesamtzahl aller Liegestütze.
  2. Ermittle ohne Programm, wie viele Liegestütze Mia an Tag 14 macht, und kontrolliere damit die Ausgabe.
  3. Erweitere das Programm: Startzahl und Steigerung werden eingegeben, und es wird ausgegeben, an welchem Tag die Gesamtzahl erstmals über 500 liegt. Begründe deine Schleifenwahl.

Hinweise

Hinweis zu Aufgabe a)
Die Anzahl der Tage ist bekannt. Du brauchst eine Variable für die Tagesanzahl und eine für die Summe.
Hinweis zu Aufgabe b)
Von Tag 1 bis Tag 14 kommen 13-mal 3 dazu.
Hinweis zu Aufgabe c)
Weiß man jetzt noch vorher, wie viele Tage es werden?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
anzahl = 5gesamt = 0for tag in range(1, 15):    print("Tag " + str(tag) + ":", anzahl, "Liegestütze")    gesamt = gesamt + anzahl    anzahl = anzahl + 3print("Insgesamt:", gesamt)

Die letzten Ausgabezeilen:

Tag 14: 44 Liegestütze
Insgesamt: 343
Erwartungshorizont zu Aufgabe b)

5 + 13 · 3 = 44. Das stimmt mit der Ausgabe für Tag 14 überein. (Gesamt: 14 · 5 + 3 · (0 + 1 + … + 13) = 70 + 3 · 91 = 343.)

Erwartungshorizont zu Aufgabe c)
anzahl = int(input("Start: "))plus = int(input("Steigerung pro Tag: "))gesamt = 0tag = 0while gesamt <= 500:    tag = tag + 1    gesamt = gesamt + anzahl    anzahl = anzahl + plusprint("An Tag", tag, "wird die 500 überschritten:", gesamt)

Die Anzahl der Tage ist nicht mehr bekannt, sie hängt von der Bedingung „gesamt ≤ 500“ ab — deshalb while. Mit 5 und 3:

An Tag 18 wird die 500 überschritten: 549