Artikel & Guides

Python IF Then Abfrage

Erstellt am: 25. September 2021

Du hast bereits ein wenig getestet und dich durch andere Beispiele gewühlt, fragst dich aber noch immer was eigentlich diese komischen Python IF THEN Abfragen so sind?!
Wozu man sie benötigt oder wie man diese eigentlich anwendet?!
Dann ließ weiter und du wirst deine Fragen beantworten können.

Python Allgemein

Für alle Python Grundlagen Themen verwende ich eine eigene Umgebung (ENV).
Wie du diese erstellen kannst, und wie du grundsätzlich Scripte startest oder Befehle in der CLI (das Terminal) ausführst, erkläre ich dir in diesem Artikel.

Python IF THEN Abfrage

Grundsätzlich kannst du mit einer IF THEN Abfrage eine Bedingung prüfen, und dann entscheiden wie bzw. welcher Code ausgeführt werden soll.
Ein praktisches Beispiel wäre unter anderem den Status einer Webseite auszulesen, und dann entsprechend anzuzeigen, ob diese erreichbar ist oder nicht.
Du könntest auch einfach die aktuelle Uhrzeit auslesen und deinen Besucher/User je nach Tageszeit, einen guten Morgen oder schönen Abend wünschen.
Schauen wir uns aber erst einmal den generellen Aufbau einer solchen Python IF THEN Abfrage an.

Der Aufbau

Wir fangen ganz einfach mit einer Prüflogik an. Hier wird lediglich geschaut ob eine festgelegte Zahl einer definierten Bedingung entspricht.
Wie in Python üblich, ist das Einrücken des Codes, nach der IF Anweisung zwingend erforderlich. Ansonsten würde der Code nicht funktionieren.
Denn durch dieses weiß Python, dass der folgende Code zu der Bedingung gehört.

Ein kleines Beispiel – dafür erstelle dir einfach eine neue Datei (zahl.py) – diese kannst du danach einfach mit python3 zahl.py starten:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Wir wollen wissen ob die festgelegte Zahl kleiner, gleich oder größer als eine bestimmte andere Zahl ist
zahl = 40
if zahl < 5:
        print('Die Zahl ist kleiner als 5')
elif zahl == 5:
        print('Super! Die Zahl ist gleich 5')
else:
        print('Öhm.. auf jeden Fall ist die Zahl größer als 5')

Verändere ruhig den Wert hinter der Variable zahl = 40. Speichere und starte das Script erneut. So siehst du am besten was genau passiert.
Zur Erklärung ein paar Zeilen. Mit der Variable zahl legen wir einen Wert in unserem Python Script fest. Im weiteren Verlauf prüft die IF Anweisung diese Variable auf einen bestimmten Zustand.

  • if zahl < 5:

Zuerst wollen wir wissen ob zahl kleiner (<) als 5 ist. Python vergleicht jetzt den Inhalt beider Werte. Also die Variable zahl mit der Ziffer 5 .
Falls dies zutrifft (true ist), wird der eingerückte Code ausgeführt und du kannst auf deinem Bildschirm dann „Die Zahl ist kleiner als 5“ lesen.

  • elif zahl == 5:

Sollte die erste Prüfung nicht zutreffen (also false ergeben), wird der eingerückte Code NICHT ausgeführt und Python springt zur elif Zeile.
In dieser prüft Python ob die Variable gleich (==) 5 ist.

Hier ist es wichtig zu verstehen wo der Unterschied zwischen einem einzelnen Gleichheitszeichen (=) und einem
doppelten Gleichheitszeichen (==) besteht.
Wie du bei zahl = 40 sehen kannst, wird hier nur ein einzelnes (=) genutzt.
Damit sagen wir, dass wir der Variable zahl den Wert hinter dem Gleichheitszeichen (=) zuweisen wollen.

Bei elif zahl == 5 wollen wir aber nichts zuweisen, sondern vergleichen. Und dafür nutzen wir die beiden Gleichheitszeichen (==).
Sollte diese Bedingung erfüllt sein (true), sagen wir Python: verarbeite den eingerückten Code und gib „Super! Die Zahl ist gleich 5“ aus.

  • else:

Die „Tante“ else trifft immer dann zu, wenn alle Bedingungen zuvor nicht erfüllt wurden.
In diesem Fall wird der eingerückte Code ausgeführt, wenn die zahl nicht kleiner als (<) 5 und auch nicht gleich (==) 5 ist.
Python würde in diesem Fall dann den Text „Öhm.. auf jeden Fall ist die Zahl größer als 5“ auf deinen Bildschirm befördern.

Das Ganze nochmal in einfach ausgedrückt:

  • Wenn die Zahl kleiner (<) 5 ist – sag: Die Zahl ist kleiner als 5
  • Ist sie genau (==) 5 – sag: Super! Die Zahl ist gleich 5
  • Ist sie irgendwas anderes (else) dann – sag: Öhm.. auf jeden Fall ist die Zahl größer als 5

AND / OR Verknüpfung

Bisher haben wir bei den Python IF THEN Abfragen immer nur einen Wert geprüft ob dieser eine bestimmte Bedingung erfüllt.
In der Praxis wirst du aber öfters auch mehrere Werte im Zusammenhang prüfen müssen. Hier gibt es zwar wie sooft mehrere Wege (kompliziert verschachtelte IF Abfragen…), aber für vieles kann man eine AND oder OR Verknüpfung benutzen.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#Wir möchten wissen ob zahl kleiner 50 und wert zur selben Zeit größer 60 ist
zahl = 30
wert = 100
if zahl <50 and wert >60:
        print('Zahl ist kleiner 50 und Wert größer 60')

Der eingerückte Code wird nur dann ausgeführt, wenn die Inhalte in den Variablen zahl kleiner 50 und (AND) in der Variable wert größer 60 ist.
Sollte einer dieser Werte nicht mehr stimmen, würden wir kein Ergebnis erhalten (der eingerückte Code wird nicht ausgeführt).

Genauso könntest du auch eine Python IF THEN Abfrage mit einer OR (oder) Verknüpfung erstellen. Bei dieser würde der eingerückte Code immer dann ausgeführt werden, wenn die eine ODER die andere Bedingung erfüllt ist.

Ein kleines Beispiel dazu:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#Wir möchten wissen ob mindesten eine Bedingung erfüllt wird
zahl = 30
wert = 100
if zahl <10 or wert >60:
        print('Entweder ist zahl kleiner 10 ODER Wert größer 60')

Wie du sehen kannst, ist zahl = 30 und somit NICHT kleiner als 10. Aber wert ist 100 und somit größer als 60. Also ist eine Bedingung erfüllt (OR) und der eingerückte Code wird ausgeführt.

Vergleichs – Operatoren in Python

==gleich
!=nicht gleich
<kleiner als
>größer als
<=kleiner oder gleich
>=größer oder gleich

Beispiel aus der Praxis

Python IF THEN Abfrage Beispiel aus der Praxis

Du möchtest dir lieber mal ein praktisches Beispiel ansehen, in dem ich eine
Python IF THEN Abfrage nutze?
Kein Problem. Schau dir dieses Script an:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#*****************************
#*****Name: check_site.py*****
#*******DarkWolfCave.de*******
#*****************************
import requests
import sys

def check_site(url):
        headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
        try:
                r = requests.get(url,headers=headers,timeout=3)
                if r.status_code != 200:
                        rstat="Seite nicht erreichbar, Zugriff verweigert oder LogIn notwendig. StatusCode:"
                        return rstat, r.status_code
                else:
                        rstat='Seite erreichbar. StatusCode:'
                        return rstat, r.status_code
        except requests.exceptions.RequestException as e:
                return 'Timeout? Fehlermeldung: ',SystemExit(e)

text,code = check_site(sys.argv[1])
print (text,code)

Kleines Python Quiz

Das Grundsätzliche weißt du jetzt zu den Python IF THEN Abfragen.
Wenn du möchtest, dann schaue dir die folgenden kleinen Aufgaben an und versuche sie alleine zu lösen.

Wo ist der Fehler?!

Im folgenden Script hat sich ein Fehler eingeschlichen. Wirst du ihn im Text finden? Ansonsten führe ihn in Python aus…

#!/usr/bin/python3
# -*- coding: utf-8 -*-
zahl = 100
if zahl <= 5:
        print('Die Zahl ist kleiner oder gleich 5')
elif zahl = 100:
        print('Super! Die Zahl ist gleich 100')
Lösung
Solltest du dieses Script in Python gestartet haben, wird es dir der Interpreter schon direkt gezeigt haben, was hier falsch ist.
Es müsste in etwas so aussehen:

File „zahl.py“, line 6
elif zahl = 100:
^
SyntaxError: invalid syntax

Und genau dort liegt der Fehler. Wir versuchen bei der Zeile mit elif zahl = 100: der Variable zahl einen Wert zuzuweisen.
Dies funktioniert im Zusammenhang mit elif aber nicht und wäre ohnehin falsch.

Richtig wäre gewesen elif zahl == 100:

Zahl ist NICHT 100

Im nächsten kleinen Script möchten wir einen Text angezeigt bekommen, sobald die Variable zahl NICHT 100 ist.
Die XXX stehen als Platzhalter und müssen ersetzt werden. Ein kleiner Tipp – etwas weiter hochscrollen und du wirst fündig.
Außerdem könntest du noch etwas hinzufügen, was angezeigt wird, sobald der Wert in der Variable zahl 100 ist.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
zahl = 99
if zahl XXX  :
        print('Die Zahl ist NICHT 100')
Lösung
Der richtige Vergleichs-Operator wäre hier != gewesen.
Also die Zeile komplett müsste so lauten: if zahl != 100 :

Jetzt würdest du beim ausführen des Scriptes die Meldung „Die Zahl ist nicht 100“ erhalten.

Bei allen anderen Werten hingegen blieb die Rückmeldung leer…

Um dies zu ändern könntest du direkt else: nutzen, da alles was bei der ersten if Bedingung nicht true zurück gibt, nur noch 100 sein kann.
Ein Beispiel dafür: (immer auf das Einrücken achten)

#!/usr/bin/python3
# -*- coding: utf-8 -*-
zahl = 99
if zahl != 100 :
print(‚Die Zahl ist NICHT 100‘)
else:
print(‚Die Zahl ist 100‘)

Schreibe einen Kommentar