Grundlagen Python (3/5): Schleifen mit for und while, Fehlerbehandlung

Bildschirm mit Code - Grundlagen Python

Dieser Blog erklärt die Grundlagen der Programmiersprache Python anhand eines Projektes – ein Programm, mit dem sich Kopfrechnen trainieren lässt. Am Ende dieser Revision kann das Programm mehrere Additionsaufgaben stellen und falsche Eingabeformate zurückweisen.

Kopfrechnen Version 0.3

Link zum ausführbaren Code auf GitHub: https://github.com/dr-bach/python/blob/main/Kopfrechnen_0_3.ipynb

Als nächstes erweitern wir das Programm dahingehend, dass mehrere Aufgaben gestellt werden. Dies realisieren wir mit Schleifen. Der zu wiederholende Code wird (wie auch bei Verzweigungen) eingerückt und wir unterscheiden zwei Arten von Schleifen.

Schleifen mit for

Bei der for Schleife wird eine Zählvariable definiert (oft i für Index genannt), die eine gewisse Anzahl an Durchläufen zählt. Zum einen definieren wir die einzelnen Zähler als range

  • bei einem Parameter von Null an die entsprechende Zahl an Elementen
  • bei zwei Parametern von bis
  • bei drei Parametern von bis mit dem 3. Parameter als Schrittweite

Alternativ ist es möglich, die Elemente einzeln und durch Kommata getrennt aufzulisten.
Außerdem kann die Schleife mit break abgebrochen und mit continue ein Durchlauf übersprungen werden.

for i in range(6):
  print ("Durchlauf", i)
print()

for i in range(3,6):
  print ("Durchlauf", i)
print()

for i in range(6,13,5):
  print ("Durchlauf", i)
print()

for i in -2, -1, 0, 1, 2:
  print (i, "zum Quadrat =", i**2)
print()

for i in range(5):
  if i>2:
    break
  print ("Durchlauf", i)
print()

for i in range(5):
  if 1<i<=3:
    continue
  print ("Durchlauf", i)
print()
Durchlauf 0
Durchlauf 1
Durchlauf 2
Durchlauf 3
Durchlauf 4
Durchlauf 5

Durchlauf 3
Durchlauf 4
Durchlauf 5

Durchlauf 6
Durchlauf 11

-2 zum Quadrat = 4
-1 zum Quadrat = 1
0 zum Quadrat = 0
1 zum Quadrat = 1
2 zum Quadrat = 4

Durchlauf 0
Durchlauf 1
Durchlauf 2

Durchlauf 0
Durchlauf 1
Durchlauf 4

Schleifen lassen sich auch schachteln, beispielsweise um Zeilen und Spalten einer Tabelle zu durchlaufen.

for x in -1, 0, 1:
  for y in -1, 0, 1:
    print(f"x: {x}, y: {y}")
x: -1, y: -1
x: -1, y: 0
x: -1, y: 1
x: 0, y: -1
x: 0, y: 0
x: 0, y: 1
x: 1, y: -1
x: 1, y: 0
x: 1, y: 1

Schleifen mit while

Bei einer while Schleife wird ein Wahrheitswert (Boolean) geprüft und solange ausgeführt, wie diese wahr (True) ist – ähnlich wie bei einer if-Verweigung.
Man kann einen eigenen Zähler initialisieren, der innerhalb der Schleife hochgezählt werden muss. Oftmals wird jedoch, insbesondere wenn man die Anzahl der Wiederholungen nicht kennt, eine Endlosschleife while True: mit einer Abbruchbedingung über break formuliert – letztere muss dann aber sicher greifen, damit das Programm anschließend fortgesetzt wird!

i=0
while i <3:
  print ("Durchlauf", i)
  i+=1
print()

while i <9:
  print ("Durchlauf", i)
  i+=4
print()

while True:
  print ("Durchlauf", i)
  i+=1
  if i>10:
    break
Durchlauf 0
Durchlauf 1
Durchlauf 2

Durchlauf 3
Durchlauf 7

Durchlauf 11

Fehlerbehandlung

Bisher kam es zum Programmabbruch (genauer gesagt zu einem ValueError), wenn man statt einer Zahl einen oder mehrere Buchstaben bzw. Sonderzeichen eingegeben hat.
Um dies zu vermeiden, können wir die Gültigkeit eines Programmschrittes mit Hilfe von try prüfen. Es wird sozusagen versucht, den Schritt durchzuführen – und falls ein Fehler auftaucht, wird eine Alternative ermöglicht.
Im konkreten Fall soll die Texteingabe in eine Ganzzahl gewandelt werden. Falls dies nicht möglich ist, wird eine Warnmeldung ausgegeben.

try:
  eingabe = int(input("Bitte gib eine ganze Zahl ein: "))
  print("Deine Zahl lautet ",eingabe)
except ValueError:
    print("Die Eingabe war keine ganze Zahl")

Ein möglicher Ablauf könnte wie folgt aussehen

Bitte gib eine ganze Zahl ein: 5.1
Die Eingabe war keine ganze Zahl

Die Abfrage lässt sich in einer while Schleife einbinden um die Eingabe so lange zu wiederholen, bis eine gültige Zahl eingegeben wurde.

while True:
    try:
      antwort = int(input("Dein Ergebnis = "))
      break
    except ValueError:
      print("Bitte eine Zahl eingeben")

Ein möglicher Ablauf könnte wie folgt aussehen

Dein Ergebnis = ö
Bitte eine Zahl eingeben
Dein Ergebnis = 21

Programm

#Bibliotheken laden
import random

#globale Variablen festlegen
runden=5

print(f"Willkommen beim Kopfrechnen. Dir werden {runden} Fragen gestellt")

# Schleife mit Anzahl der Runden
for i in range(runden):

  #Zufallszahlen erzeugen
  a=random.randint(1, 5)
  b=random.randint(1, 5)

  #Aufgabe stellen
  print(f"Wieviel ist {a} + {b}?")

  #Ergebnis berechnen
  ergebnis=a+b

  # Antwort abfragen
  while True:
    try:
      antwort = int(input("Dein Ergebnis = "))
      break
    except ValueError:
      print("Bitte eine Zahl eingeben")

  # Antwort bewerten
  if ergebnis==antwort:
    print("Richtig\n")
  else:
    print(f"{antwort} ist falsch. Das richtige Ergebnis lautet {ergebnis}\n")

Hier könnte ein möglicher Ablauf wie folgt aussehen

Willkommen beim Kopfrechnen. Dir werden 5 Fragen gestellt
Wieviel ist 4 + 5?
Dein Ergebnis = 9
Richtig

Wieviel ist 4 + 3?
Dein Ergebnis = ö
Bitte eine Zahl eingeben
Dein Ergebnis = 7
Richtig

Wieviel ist 1 + 4?
Dein Ergebnis = 5
Richtig

Wieviel ist 3 + 4?
Dein Ergebnis = 7
Richtig

Wieviel ist 1 + 5?
Dein Ergebnis = 2
2 ist falsch. Das richtige Ergebnis lautet 6

Die kompletten Grundlagen Python

Kopfrechnen Version 0.1

Additionsaufgabe mit zwei Zahlen stellen

  • Variablen
  • Ausgabe mit print()
  • Eingabe mit input()

Link: https://kiwi-strategie.de/grundlagen-python-1-5/

Kopfrechnen Version 0.2

Additionsaufgabe mit zwei Zufallszahlen stellen und das Ergebnis bewerten

  • Kommentare
  • Bibliotheken einbinden (am Beispiel von random)
  • Verzweigungen mit ifelse und elif

Link: https://kiwi-strategie.de/grundlagen-python-2-5/

Kopfrechnen Version 0.3

Mehrere Additionsaufgaben stellen und falsche Eingabeformate zurückweisen

  • Schleifen mit for und while
  • Fehlerbehandlung

Link: https://kiwi-strategie.de/grundlagen-python-3-5/

Kopfrechnen Version 0.4

Beliebig viele Aufgaben stellen mit abschließender Gesamtbewertung

  • Funktionen (mit Parametern und Rückgabewerten)
  • Programmierstil (PEP, Zen of Python)

Link: https://kiwi-strategie.de/grundlagen-python-4-5/

Kopfrechnen Version 1.0

Weitere Aufgabetypen abfragen sowie Spielstand laden und speichern

  • komplexere Datenstrukturen (Listen und Dictionaries)
  • externe Daten lesen und schreiben

Link: https://kiwi-strategie.de/grundlagen-python-5-5/

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert