Gletscherabbruch Sölden

Python for-Schleife



Ideen: A. M. Maier, G. Kompa, Elektronikschule Tettnang
M. Brenner, J. Schnaiter, "Softwareentwicklung mit Python", ZSL Freiburg, 2024


In Python wird in der for-Schleife eine feste Anzahl an Wiederholungen durchlaufen. Dazu verwendet man eine Zählvariable.

In diesem Artikel lernst Du die Struktur der for-Schleife in Python kennen. Neben der Schleifenstruktur mit Initialisierung, Bedingung und Änderung, wird das Inkrementieren, Dekrementieren und die verschachtelte for-Schleife erklärt.

Ice Age und der Ländercode Die Struktur der for-Schleife

Als meine Frau aus China die DVD ICE Age für 1 EUR mitbrachte war die Freude unserer Kids groß. Umso überraschter war ich, als beim DVD-Player die Ländercodemeldung kam:
Aktuelle Region: Europa
Mögliche Änderungen: 7
Zähler zum Einstellen der Region: 0mal geändert

Das musste ich natürlich gleich ausprobieren. Ich wechselte auf die Region China und dann wieder zurück auf Europa und schon hatte ich nur noch 5 mögliche Änderungen. Nach jedem Wechsel war ich um eine Änderungsmöglichkeit ärmer.

Nach einem ganz ähnlichen Prinzip funktioniert auch die for-Schleife oder Zählschleife in Python.

Die for-Schleife in Python Syntax



Struktogramm for-Schleife

In Python wird in der for-Schleife (auch Zählschleife) eine feste Anzahl an Wiederholungen durchlaufen. Eine Zählvariable i wird bspw. von 0 bis 6 in 1er Schritten gezählt. In Python programmiert man:

for i in range(7):
  print(i, end = " ")
0 1 2 3 4 5 6

Als Defaultwerte sind der Startwert Null und die Änderung in 1erSchritten hinterlegt. Für einen anderen Startwert und Endwert programmiert kann man auch diesen angeben.

for i in range(3,7):
  print(i, end = " ")
3 4 5 6

Die Schrittweite kann als letzter Parameter angegeben werden.

for i in range(3,7,2):
  print(i, end = " ")
3 5

Die for-Schleife besitzt einen Schleifenkopf mit Initialisierung (Startwert), Bedingung (Abbruch) und Änderung (Schrittweite) und einen Schleifenkörper, der hier 7mal, mit Ausgabe der Zählvariable, wiederholt wird.

Aufgabe 1 Zählen und Tippspiel

  1. Zähle von 0 bis 10 in 1er Schritten: 0 1... 10.
  2. Zähle von 5 bis 10 in 1er Schritten: 5 6... 10.
  3. Zähle von 4 bis 10 in 2er Schritten: 4 6... 10.
  4. Rückwärts zählen: 10 9... 0.

Bei einem Tippspiel mit maximal 3 Versuchen und Zahlenwerten zwischen 0 und 10 gibt es ggf. einen Hinweis ob der Wert zu groß oder zu klein ist.

  1. Programmiere das Tippspiel.
  1. for i in range(11):
  2. for i in range(5,11):
  3. for i in range(4,11,2):
  4. for i in range(10,0,-1):
  5. import random
    gewinnzahl = random.randint(0,10)
    tipp = int(input("Tippe eine Zahl zwischen 0 und 10: "))
    for i in range(3):
      ...

Aufgabe 2 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

for i in range(10): print(i, end=" ")
Gib die Ausgabe an. Wähle eine Antwort.

  1. 0 1 2 3 4 5 6 7 8 9
  2. 0 1 2 3 4 5 6 7 8 9 10
  3. 1 2 3 4 5 6 7 8 9 10
  4. 1 2 3 4 5 6 7 8 9


for i in range(1,15,3): print(i, end=" ")
Gib die Ausgabe an. Wähle eine Antwort.

  1. 1 3 6 9 12 15
  2. 0 1 2 3 4 5 6 7 8 9 10
  3. 1 2 3 4 5 6 7 8 9 10 11 12 13
  4. 1 4 7 10 13



for i in range(3,3): print(i, end=" ")
Gib die Ausgabe an. Wähle eine Antwort.

  1. 0 1 2 3
  2. 0 1 2
  3. 3


for i in range(10,0,-1): print(i, end=" ")
Gib die Ausgabe an. Wähle eine Antwort.

  1. 10 9 8 7 6 5 4 3 2 1
  2. 9 8 7 6 5 4 3 2 1 0
  3. 10 8 6 4 2 0
  4. 10 9 8 7 6 5 4 3 2 1 0


for i in range(5):
  i=i+2
  print(i, end=" ")

Gib die Ausgabe an. Wähle eine Antwort.

  1. 2 3 4 5 6
  2. 2 4
  3. 0 2 4
  4. 0 1 2 3 4 5


int i; for i in range(5):
  i=i-1
  print(i+1, end=" ")

Gib die Ausgabe an. Wähle eine Antwort.

  1. 4 3 2 1 0
  2. -1 0 1 2 3
  3. 0 1 2 3 4
  4. -1 -2 -3 -4 -5

Aufgabe 3 Treuestempel

In einem Café gewährt der Inhaber folgenden Treuevorteil: Für jede 5 EUR bekommt man einen Treuestempel. Für 10 Stempel erhält man einen Rabatt im Wert von 3 EUR.

  1. Schreibe das Programm Treuestempel. Der Nutzer gibt den Einkaufswert ein. Berechnet und ausgegeben wird der Endpreis.
  2. Die Anzahl der Treuestempel soll als Wert und Grafik angegeben werden:
    ☕☕☕☕☕
    ☕☕☕☕☕
    ☕☕☕ 13 Stempel, Rabatt: 3 €
  3. Simon kauft Kuchen im Wert von 46 EUR. Beurteile die folgende Aussage: "Er sollte für 4 EUR mehr einkaufen, dann spart er Geld."
Kaffee mit Rabattkarte
  1. einkaufswert = float(input("Einkaufswert: "))
    anzahlStempel = int(einkaufswert / 5)
    rabatt = 0
    ...
  2. for i in range(anzahlStempel):
      print("☕", end="")
      ...
  3. Er spart kein Geld, er zahlt 1 EUR mehr, sichert sich aber einen Rabatt und bekommt so mehr für sein Geld.

Verschachtelte for-Schleife Schleifen in Schleifen



Ausstecher­formen

Man kann for-Schleifen auch Verschachteln:

for i in range(2):
  for j in range(3):
    print(f"{i}{j}, end = " ")
00 01 02 10 11 12

In diesem Beispiel wird die innere Schleife 3mal und die äußere Schleife 2mal durchlaufen, das macht insgesamt: 2 . 3 = 6mal.

Aufgabe 4 Exakte Zeiten mit verschachtelten for-Schleifen

Autoren: D. Supper

Wir trainieren unser Programmierkenntnisse mit verschachtelten Schleifen.

  1. Gib die Gesamtanzahl der Schleifendurchläufe an.
    for i in range(1,11):
       for j in range(0,10):

    1. 110mal
    2. 100mal
    3. 90mal
    4. 80mal
  1. Gib die Gesamtanzahl der Schleifendurchläufe an.
    for i in range(3,11,1):
      for i in range(10,5,-1):

    1. 100mal
    2. 56mal
    3. 48mal
    4. 40mal
  1. Schreibe das Programm Zeiten welches einen Countdown von 10 bis 0 zählt. Die Verzögerungszeit soll exakt 1 s betragen. Verwende zum Erzeugen der Verzögerungszeit verschachtelte for-Schleifen. Zum Vergleich kannst Du das Modul time verwenden.

Entspann dich erstmal ...



"Ein Netz hat Löcher, immer. Sonst wäre es ja eine Decke."

"Deswegen heißt es, zumindest in Deutschland, ja auch Mobilfunknetz und nicht Mobilfunkdecke." mademyday.com

Rhabarber

Aufgabe 5 Finde die Fehler

Autoren: G. Kompa, D. Supper

Finde die Fehler in den drei for-Schleifen.

Die Beantwortung der folgenden drei Fragen hilft bei der Fehlersuche.

  1. Kann man außerhalb einer for-Schleife auf die Zählvariable zugreifen?
  2. Kann eine for-Schleife in Python unendlich oft zählen?
  3. Welche Schrittweiten sind zulässig?

Aufgabe 6 Schaltjahre

Autoren: G. Kompa, D. Supper

Uhr im Einkaufszentrum

In unserem Kalender sind zum Ausgleich der Jahreslänge in regelmäßigen Abständen Schaltjahre eingebaut. Ein astronomisches Jahr hat dabei 365,24219 Kalendertage. Zur exakten Festlegung der Schaltjahre dienen folgende Regeln:

  • Ist die Jahreszahl durch 4 teilbar, so ist das Jahr ein Schaltjahr. Diese Regel hat allerdings eine Ausnahme:
  • Ist die Jahreszahl durch 100 teilbar, so ist das Jahr kein Schaltjahr. Diese Regel hat allerdings wiederum eine Ausnahme:
  • Ist die Jahreszahl durch 400 teilbar, so ist das Jahr doch ein Schaltjahr.
  1. Gib eine Liste mit den Schaltjahren von 2000 - 2100 aus.
  2. Gib eine Liste mit allen Schaltjahren von Regeln 2 und 3 aus.
  3. Gib eine Liste aller Primzahlen bis 100 aus.
  1. for i in range(2000,2001):
       ...

Aufgabe 7 Mathe und ASCIIArt

Autoren: D. Supper | binnendifferenziert

  1. Schreibe das Programm Mittelwert: Seine Aufgabe besteht darin, eine bestimmte Anzahl von Werten über die Tastatur einzulesen. Die Summe der Werte soll berechnet und zusammen mit dem Mittelwert ausgegeben werden.

    Frage zuerst ab wie viele Werte der Benutzer eingeben möchte. Mit der Anzahl der Werte schreibst du dann die Bedingung der for-Schleife.

  2. Addiere nur gerade Zahlen.
  3. Für Mathefreaks: Berechne n!
  4. Für Honigfreaks: Zeichne eine Honigwabe in dem Programm Honigwabe.
  5. Zeichne ein ASCII-Art mit Hilfe einer for-Schleife in dem Programm ASCIIArt.
Honigwabe
  1. anzahl = int(input("Wie viele Werte wollen sie eingeben? "))
    for i in range(anzahl): ...
  2. if wert%2 == ...
  3. Tip: Fakultät ist eine Matheoperation.
  4. Tip: Nutze eine for-Schleife und gib die entsprechenden Zeichen aus. Beachte, ein Backslash kann nur mit der Escapesequenz \\ dargestellt werden kann.
  5. Tip: Nutze das Internet zur Recherche.

Aufgabe 8 Pythagoreisches Tripel

Autoren: D. Supper | binnendifferenziert

rechtwinkliges Dreieck

Drei ganzzahlige Längen, die die Seitenlängen eines rechtwinkligen Dreiecks darstellen, nennt man pythagoreisches Tripel. Es muss die Gleichung gelten, dass die Summe der Quadrate der beiden Seiten, welche an den rechten Winkel angrenzen, gleich dem Quadrat der Hypotenuse ist. (Satz des Pythagoras)

Erstelle das Programm PythagoresischesTripel. Ermittle für die Variablen a, b, und c alle passenden Werte im Bereich für a, b, c von 1 bis 100.
Beispiel für ein Tripel: (3,4,5), da 3² + 4² = 5².

Benutze dafür eine dreifach verschachtelte for-Schleife, die die möglichen Werte durchläuft. Stelle sicher, dass kein Tripel doppelt vorkommt.

(3,4,5) (5,12,13) (6,8,10) (7,24,25) (8,15,17)
(9,12,15) (9,40,41) (10,24,26) (11,60,61) (12,16,20)
(12,35,37) (13,84,85) (14,48,50) (15,20,25) (15,36,39)
(16,30,34) (16,63,65) (18,24,30) (18,80,82) (20,21,29)
(20,48,52) (21,28,35) (21,72,75) (24,32,40) (24,45,51)
(24,70,74) (25,60,65) (27,36,45) (28,45,53) (28,96,100)
(30,40,50) (30,72,78) (32,60,68) (33,44,55) (33,56,65)
(35,84,91) (36,48,60) (36,77,85) (39,52,65) (39,80,89)
(40,42,58) (40,75,85) (42,56,70) (45,60,75) (48,55,73)
(48,64,80) (51,68,85) (54,72,90) (57,76,95) (60,63,87)
(60,80,100) (65,72,97)

Aufgabe 9 Das Einmaleins

Autoren: D. Supper | binnendifferenziert

Schreibe das Programm Einmaleins: Seine Aufgabe besteht darin, das kleine Einmaleins in tabellarischer Form zu erzeugen.

Für die Tabelle müssen insgesamt hundert Zahlen gedruckt werden. Das lässt vermuten, dass eine Schleife sinnvoll wäre. Die Tabelle ist aber aus zehn Zeilen mit jeweils zehn Spalten aufgebaut. Mit anderen Worten, es müssen insgesamt zehn Zeilen gedruckt werden und in jeder Zeile wiederum zehn Zahlen. In diesem Fall bietet sich eine geschachtelte Zeile zur Erzeugung der Tabelle an.

Einmaleins
print(f"{i:1d}•{j:1d}={i*j:2d}",end=" ")

Wortliste und Satzbausteine



die for-Schlei­fe, -en Die for-Schleife (auch Zählschleife) wiederholt einen Anweisungs­block x-mal. Dabei wird ein Start­wert festgelegt, eine Abbruch­bedingung und die Schritt­weite
die Initiali­sierung, -en hier wird der Startwert festgelegt, z.B. der Wert 6 in: for i in range(6,12,3)
die Abbruch­beding­ung, -en Sobald die Bedingung den Wert false ergibt wird die Schleife ver­lassen, z.B. der Wert 12 in: for i in range(6,12,3)
die Än­derung, -en hier wird die Schritt­weite festgelegt, z.B. der Wert 3 in: for i in range(6,12,3)
die Zähl­variable, -en Variable, welche zum zählen in der for-Schleife verwendet wird, z.B. die Variable zahl in: for zahl in range(6,12,3)
inkre­men­tieren i = i + 1 oder kurz i+=1
dekre­men­tieren i = i - 3 oder kurz i-=3
ver­schach­telte for-Schleife eine for-Schleife in einer anderen for-Schleife