Übung 13 – for und range

Ziel: Sie wiederholen Zeilen eine feste Anzahl von Malen mit for und range und sammeln Ergebnisse in einer Variablen. 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. for und range

for i in range(1, 4):
    print(f"Runde {i}")
Runde 1
Runde 2
Runde 3

Ausprobieren: Kopieren Sie den Code (Knopf „Kopieren“), führen Sie ihn aus und ändern Sie dann range(1, 4) in range(1, 11).

AufrufZahlenBedeutung
range(5)0 1 2 3 4von 0 bis vor 5
range(1, 6)1 2 3 4 5von 1 bis vor 6
range(0, 10, 2)0 2 4 6 8in Zweierschritten
range(5, 0, -1)5 4 3 2 1rückwärts

while oder for? Wissen Sie vorher, wie oft wiederholt wird, nehmen Sie for. Wissen Sie nur, wann Schluss ist, nehmen Sie while.

2. Aufgaben

Aufgabe 2a · Einmaleins Pflicht, ca. 7 Min.

Ein Lernprogramm soll die Einmaleins-Reihe einer Zahl von 1 bis 10 ausgeben.

Ihre Aufgabe

  1. Tragen Sie für die Reihe 7 ein, welche Zeilen an den genannten Stellen stehen müssen.
    ZeileAusgabe (erwartet)
    1.
    2.
    5.
    10.
  2. Schreiben Sie einmaleins.py: Es fragt mit Welche Reihe? nach der Zahl und gibt mit for und range zehn Zeilen aus.
  3. Die Ausgabe beginnt und endet für die Reihe 7 genau so:
    Welche Reihe? 7
    1 x 7 = 7
    2 x 7 = 14
    …
    10 x 7 = 70
  4. Testen Sie mit 7 und 3 und vergleichen Sie mit Ihrer Tabelle.

Fertig sind Sie, wenn genau zehn Zeilen erscheinen, die erste mit 1 x und die letzte mit 10 x.

Hilfen – erst öffnen, wenn Sie nicht weiterkommen (zum Öffnen anklicken):

Tipp anzeigen

Für die Zahlen 1 bis 10 brauchen Sie range(1, 11): Die Grenze gehört nicht dazu. Das Ergebnis rechnen Sie direkt im f-String aus: {i * zahl}.

Gerüst anzeigen

Ersetzen Sie jedes ___ durch den passenden Ausdruck.

zahl = int(input("Welche Reihe? "))

for i in range(___, ___):
    print(f"{i} x {zahl} = {___}")
Lösung anzeigen
ZeileAusgabe
1.1 x 7 = 7
2.2 x 7 = 14
5.5 x 7 = 35
10.10 x 7 = 70
zahl = int(input("Welche Reihe? "))

for i in range(1, 11):
    print(f"{i} x {zahl} = {i * zahl}")
Welche Reihe? 3
1 x 3 = 3
2 x 3 = 6
3 x 3 = 9
4 x 3 = 12
5 x 3 = 15
6 x 3 = 18
7 x 3 = 21
8 x 3 = 24
9 x 3 = 27
10 x 3 = 30
Mit range(10) liefe i von 0 bis 9: Die erste Zeile wäre dann 0 x 3 = 0 und 10 x 3 fehlte.

Aufgabe 2b · Summe von 1 bis n Pflicht, ca. 8 Min.

Ein Programm soll alle Zahlen von 1 bis n zusammenzählen, z. B. für n = 4: 1 + 2 + 3 + 4 = 10.

Ihre Aufgabe

  1. Rechnen Sie die erwarteten Summen von Hand aus.
    nSumme (erwartet)Programm stimmt?
    1
    5
    10
    100
  2. Schreiben Sie summe.py: Es fragt mit Bis zu welcher Zahl? nach n und rechnet mit einer Sammelvariablen summe und einer for-Schleife.
  3. Geben Sie das Ergebnis genau so aus:
    Bis zu welcher Zahl? 4
    Die Summe von 1 bis 4 ist 10.
  4. Testen Sie alle vier Werte und vermerken Sie in der Tabelle, ob das Programm stimmt. Wie lange hätten Sie für n = 100 von Hand gebraucht?

Fertig sind Sie, wenn alle vier Summen stimmen – auch für n = 1.

Für Schnelle: Schreiben Sie treppe.py, das für eine Stufenzahl eine Treppe aus Sternchen ausgibt. Tipp: "*" * 3 ergibt ***.

Hilfen – erst öffnen, wenn Sie nicht weiterkommen (zum Öffnen anklicken):

Tipp anzeigen

Vor der Schleife steht summe = 0. In jeder Runde kommt die aktuelle Zahl dazu: summe = summe + zahl. Damit n selbst mitgezählt wird, endet range bei n + 1.

Gerüst anzeigen

Ersetzen Sie jedes ___ durch den passenden Ausdruck.

n = int(input("Bis zu welcher Zahl? "))
summe = ___

for zahl in range(1, ___):
    summe = ___

print(f"Die Summe von 1 bis {n} ist {summe}.")
Lösung anzeigen
nSumme
11
515
1055
1005050
n = int(input("Bis zu welcher Zahl? "))
summe = 0

for zahl in range(1, n + 1):
    summe = summe + zahl

print(f"Die Summe von 1 bis {n} ist {summe}.")
Bis zu welcher Zahl? 100
Die Summe von 1 bis 100 ist 5050.
Der junge Carl Friedrich Gauß soll diese Aufgabe ohne Schleife gelöst haben: 1 + 100, 2 + 99, … ergibt 50-mal 101 = 5050. Python braucht dafür keine Idee, nur die Schleife.

Für Schnelle:

n = int(input("Wie viele Stufen? "))

for stufe in range(1, n + 1):
    print("*" * stufe)
Wie viele Stufen? 4
*
**
***
****