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
if
,else
undelif
Link: https://kiwi-strategie.de/grundlagen-python-2-5/
Kopfrechnen Version 0.3
Mehrere Additionsaufgaben stellen und falsche Eingabeformate zurückweisen
- Schleifen mit
for
undwhile
- 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
Schreibe einen Kommentar