Python Tutorial
- jetzt Python programmieren lernen

if-Bedingung in Python

In Python gibt es die Möglichkeiten Bedingungen zu überprüfen und entsprechend im Programmablauf darauf zu reagieren. Hier könnten wir abhängig von der Uhrzeit den Nutzer entsprechend Begrüßen. Aber erst einmal der allgemeine Aufbau von if-Abfragen und wie wird diese einsetzen.

Aufbau der if-Abfrage

Würden wir in deutsch eine Bedingung formulieren, würde diese wie folgt aussehen

wenn Wert kleiner als 5 dann mache alles Doppelpunkt

Und nun das Ganze als Python-Programm, in der wir als erstes die Variable definieren:

wert = 3
if wert < 5:
	print('Wert ist kleiner als 5')

Das wichtige ist, dass nach der if-Abfrage das weitere, was zu der if-Abfrage gehört, eingerückt wird! Diese Einrückungen sind der Dreh- und Angelpunkt in Python und garantiert eine sauberen Quellcode. Pfuscht man bei den Einrückungen, funktioniert das Programm nicht wie erwartet.

Bei unserer if-Anfrage gehört alles Folgende, was noch eingerückt ist, zu der Bedingung. Und das kann mehr als eine Zeile sein!

wert = 3
if wert < 5:
	print('Wert ist kleiner als 5')
	print('Ich gehöre auch noch zu der Bedingung')
print('und hier geht es nach der if-Abfrage weiter')

Lassen wir das Programm ausführen, erhalten wir als Ergebnis alle 3 Zeilen ausgegeben. Die 2 Textzeilen, die "innerhalb" der if-Abfrage sind (sprich, die eingerückt sind) und die letzte Textzeile, die nach der if-Abfrage kommt und nicht eingerückt ist.

Ändern wir nun unsere Variable am Anfang auf "wert = 9", erhalten wir bei der Programmausführung nur noch die letzte Zeile ausgegeben, die nach der if-Abfrage kommt. Die if-Abfrage ist nicht wahr, weil der Wert mit 9 bereits größer ist als die Bedingung "< 5" und somit das eingerückte der if-Abfrage nicht ausgeführt wird.

Wichtig ist bei Programmänderungen, dass man speichern nicht vergisst!

Was passiert eigentlich genau bei wert < 5? Python überprüft, ob das Ergebnis wahr oder falsch ist. Dabei kann auch direkt "true" oder "false" der if-Abfrage präsentiert werden und diese reagiert darauf entsprechend:

if True:
	print('if-Bedingung ist wahr')

Es erscheint als Ergebnis:

if-Bedingung ist wahr

Natürlich könnten wir auch eingeben "if false:" und es würde nichts angezeigt werden, da unsere if-Abfrage nicht wahr ist.

Natürlich würde kein Mensch so eine if-Abfrage erstellen, denn die if-Abfrage würde ja immer exakt zum gleichen Ergebnis führen. Allerdings können wir auch Variablen übergeben, die diesen Wert haben.

wahroderfalsch = True
if wahroderfalsch:
	print('if-Bedingung ist wahr')

Unsere Variable "wahroderfalsch" hat nun den Wert "true" zugewiesen bekommen und die if-Abfrage reagiert entsprechend darauf.

Diese Variablen sind vom Typ Boolean – es gibt nur die Werte true oder false bei Boolean. Diese Variablen-Typen sind benannt nach dem "Erfinder" George Boole.

Alternative, wenn if-Abfrage nicht zutrifft

Jetzt ist es oft geschickt gleich darauf reagieren zu können, wenn die if-Abfrage nicht zutrifft. Ohne diese Kenntnis müssten wir solche kantigen Konstruktionen bauen wir folgt:

wert = 9
if wert < 5:
	print('Wert ist kleiner als 5')
if wert > 4:
	print('Wert ist größer als 4')

Dies wollen wir kürzer, da die zweite if-Abfrage einfach das Gegenteil gerade von der ersten darstellt. Alles was nicht kleiner ist als 5 ist auf jeden Fall größer als 4. Und hier kommt das schöne Wort "else" zum Einsatz:

wert = 9
if wert < 5:
	print('Wert ist kleiner als 5')
else:
	print('Wert ist größer als 4')

Unseren zweiten Part ersetzen wird durch "else:". Trifft unsere if-Abfrage nicht zu sprich, sprich ist diese nicht "wahr" sondern falsch, dann wird der Block unter "else:" ausgegeben:

Als Ausgabe erhalten wir nun bei der Programmausführung:

Wert ist größer als 4

Weitere Bedingungen innerhalb der Bedingung prüfen – elif

Unser bisheriges Programm ist nicht wirklich sexy. Es gibt die Ausgabe "Wert ist kleiner als 5" oder "Wert ist größer als 4". Eigentlich wären folgenden 3 mögliche Ergebnisse deutlich schicker.

  • Wert ist kleiner 5
  • Wert ist exakt 5
  • Wert ist größer 5

Dazu brauchen wir eine Abfrage innerhalb der Abfrage. Und dazu kennt Pyton den Befehl "elif". In den meisten anderen Programmiersprachen kennt man dies als "elseif" aber in Python ist es "elif".

Unser Programm von oben sieht nun damit so aus.

wert = 9
if wert < 5:
	print('Wert ist kleiner als 5')
elif wert == 5:
	print('Wert ist exakt 5')
else:
	print('Wert ist größer als 5')

Der Überprüfung von der Bedingung hinter "elif" wird nur dann überprüft, wenn die erste Bedingung nicht zutrifft. Trifft unsere Bedingung unter "elif" auch nicht zu, dann kommt die Alternative unter "else" zum Tragen.

Wichtig sind die Einrückungen!

Kleine böse Fehlerquelle – doppeltes Gleichzeichen

Hier unser Code, in dem sich ein Fehler eingeschlichen hat:

wert = 9
if wert < 5:
	print('Wert ist kleiner als 5')
elif wert = 5:
	print('Wert ist exakt 5')
else:
	print('Wert ist größer als 5')

Wir überprüfen bei elif, ob dieses exakt 5 entspricht. Hier ist der Standardfehler, dass versehentlich nur ein Gleichzeichen (anstelle von 2) gemacht wurde. Das ist aber nicht möglich und somit kommt eine Fehlermeldung von Python in Form von "SyntaxError: invalid syntax"

beliebig viele elif

Wir sind bei elif nicht auf eines begrenzt. Von diesen weiteren Abfragen können beliebig viele gemacht werden. Je nach Aufgabenstellung macht es Sinn.