NB01_Bedingungen¶
(c) 2025 Technische Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever - Impressum
Bedingung¶
Bedingungen sind eine grundlegende Möglichkeit, Programmabläufe in Abhängigkeit von unterschiedlichen Werten, Ausdrücken, Berechnungen oder Ergebnissen zu steuern.
Einfache Bedingung¶
Eine Bedingung wird in Python mit dem Schlüsselwort if begonnen, danach kommt die Bedingung die mit einem Doppelpunkt abgeschlossen wird. Alle Ausdrücke und Berechnungen die durchgeführt werden sollen, wenn die Bedingung erfüllt ist, müssen in dem anschliessenden eingerückten Block auftauchen.
a = 4
Im folgenden Beispiel lautet die Bedingung
a%2 == 0
True
d.h. die Bedingung ist wahr, wenn a modulo 2 den Wert Null ergibt - oder anders gesagt: wenn a durch 2 teilbar ist.
if a%2 == 0:
b = a**a
print(b)
256
Ist a ungerade wird der entsprechende Block nicht ausgeführt:
a = 5
a%2 == 0
False
if a%2 == 0:
b = a**a
print(b)
Einrückung und Ausrückung¶
Wichtig:
Python hat - im Gegensatz zu anderen Programmiersprachen - mit der Ein- und Ausrückung (engl. Indentation) eine Syntax, die sich auf das Aussehen auswirkt
- Vorteil: Man kann sich leicht in Programme von anderen einlesen
- Nachteil: Anfänger bekommen oftmals Indentation-Fehler
Indentation-Fehler haben in der Regel mit dem unterschiedlichen Verhalten von Editoren (Textbearbeitungsprogrammen) für die Eingabe des Tab- (Tabulator-) Zeichens (^t oder \t) und Leerzeichen (Blank) zu tun. Ein Tab ist ein einziges Zeichen obwohl in den Editoren dafür z.B. 4 Leerzeichen angezeigt werden, wenn dann einmal ein Tab und ein anderes mal 4 Leerzeichen zum Einrücken eingegeben werden, dann ergibt sich ein Indentation-Fehler.
Sowohl im Jupyter-Notebook als auch in Spyder (und auch bei anderen guten Editoren) wird ein Tab daher immer in die entsprechende Anzahl von Leerzeichen umgewandelt, sodass die sichtbare Einrückung identisch mit der für Python notwendigen Einrückung übereinstimmt.
Alternative Bedingung¶
Alle Ausdrücke und Berechnungen die durchgeführt werden sollen, wenn die Bedingung nicht erfüllt ist, müssen nach dem Schlüsselwort else wieder in einem eingerückten Block auftauchen:
a = 12
if a%2 == 0:
print("a ist gerade")
else:
print("a ist ungerade")
a ist gerade
%%Mooc MultipleChoiceAssessment
Alternative Bedingung zur Verteilung von Äpfeln und Birnen in 2 Obstschalen
Sie haben zwei unterschiedlich große Obstschalen sGross und sKlein (wobei sGross > sKlein gilt) und eine Anzahl von a Äpfeln und b Birnen und sollen die Äpfel und Birnen entsprechend ihrer Anzahl in die beiden Obstschalen verteilen. Dabei nehmen wir an, dass die kleinere Anzahl an Obst auch immer in die kleinere Schale und die größere Anzahl an Obst in die größere Schale passt. Die Verteilung geschieht dann über eine Zuweisung. Folgende Antworten stehen zur Verfügung:
Antwort 1
if a > b:
sGross = a
sKlein = b
else:
sGross = b
sKlein = a
Antwort 2
if a > b:
sGross = b
sKlein = a
else:
sGross = a
sKlein = b
Antwort 3
if a <= b:
sGross = b
sKlein = a
else:
sGross = a
sKlein = b
Welche Antwort ist falsch ?
Mehrfache alternative Bedingungen¶
Wenn mehrere Bedingungen sich gleichzeitig ausschliessen, wie z.B. bei dem folgenden Beispiel für die Umrechnung von Punkten in einen Notenschlüssel, dann werden diese Bedingungen - mit Ausnahme der ersten Bedingung - mit dem Schlüsselwort elif begonnen:
punkte = 27
if punkte < 5:
note = 5
elif punkte < 15:
note = 4
elif punkte < 25:
note = 3
elif punkte < 35:
note = 2
else:
note = 1
print(punkte,"Punkte ergeben die Note",note)
27 Punkte ergeben die Note 2
In anderen Programmiersprache gibt es für diese Form der mehrfachen alternativen Bedingung Konstrukte die switch oder case genannt werden.
%%Mooc MultipleChoiceAssessment
Mehrfache alternative Bedingungen
Eine alternative Lösung der obigen Aufgabenstellung verwendet nicht eine aufsteigende Reihenfolge für die Abfragen der Punkte in den Bedingungen, sondern eine absteigende Reihenfolge - zusammen mit der entsprechenden Negation der Bedingung:
if punkte >= 35:
note = 1
elif punkte >= 25:
note = 2
elif punkte >= 15:
note = 3
elif punkte >= 5:
note = 4
else:
note = 5
Für welche Anzahl von Punkten ist dies die bessere Lösung ?
%%Mooc Video
Weitere Literatur¶
%%Mooc WebReference
If Statements
https://docs.python.org/3/tutorial/controlflow.html#if-statements
Hinweis: Ein kurzes Beispiel aus dem Python Tutorial mit weiteren Verlinkungen zur Syntax-Beschreibung