Zum Inhalt springen

if-else-Bedingungen

Einführung

In der Informatik so auch im Leben sind häufig Fallunterscheidungen notwendig.

Ein einfaches Beispiel:

sonne = True #Wahrheitswerte (wahr, falsch) in Python beginnen mit einem Großbuchstaben
schirm = False

if sonne == True:
    print('Die Sonne scheint.')
else:
    print('Die Sonne scheint nicht.')

if schirm == True:
    print('Ich habe einen Regenschirm dabei!')
else:
    print('Ich habe keinen Regenschirm dabei!')

Mit if wird der Wert der Variablen sonne und schirm jeweils hintereinander und in diesem Beispiel unabhängig voneinander geprüft. Je nach Wert (True/False) gibt die Konsole den entsprechenden String aus. Ein paar Kommentare im Detail:

if sonne == True: #Prüfungsbedingung, der Doppelpunkt ist wichtig, bei erfüllter Bedingung, wird der Anweisungsblock nach dem Doppelpunkt ausgeführt

#Bei der Prüfung ob eine Variable einen bestimmten Wert hat, schreibt man doppelte Gleichheitszeichen == statt einem einfachen Gleichheitszeichen =

a = 5 # Wert zuweisen: a wird der Wert 5 zugewiesen
a == 8 # Wert prüfen: Es wird geprüft, ob a gleich 8 ist. Das ist hier nicht der Fall. Der Rückgabewert wird also False sein!

Vergleichsoperatoren

Für die Prüfung von Bedingungen können verschiedene Vergleichsoperatoren genutzt werden, je nach Bedarf.

a == b #ist a gleich b?
a != b #ist a nicht gleich b?
a < b #ist a kleiner b?
a > b #ist a größer b?
a <= b #ist a kleiner oder gleich b?
a >= b #ist a größer oder gleich b?

#scheinbar etwas speziell, aber sehr nützlich:
22 % 3 # 22 modulo 3 bedeutet, ich suche nach dem Rest, nachdem ich versucht habe durch 3 zu teilen. In diesem Fall ist das Ergebnis 1, denn 3 passt 7 mal in die 22, es bleibt der Rest 1

#probiere diesen Code mal aus
print(22%3)

# oder das
print(22%8)

Vergleichsoperatoren lassen sich auch kombinieren:

a == b and a ==0 #ist a gleich b UND a gleich 0? --> wahr, wenn beide Bedingungen erfüllt
a < 0 or b< 0 #ist a kleiner 0 oder b kleiner 0? --> wahr, wenn mind. 1 Bedingung erfüllt

Wir schauen uns mal zwei Beispiele an, um zusammengesetzte Bedingungen mit and und or zu verstehen.

#Beispiel 1
if 3+4 == 8 and 5+7 == 12: #wenn 3+4=8 wahr ist UND 5+7=12 wahr ist, dann führe den folgenden Block aus
    print("Alles gut gemacht.")
else:
    print("Ach du meine Güte, nein!")

#Beispiel 2
if 3+4 == 8 or 5+7 == 12: #wenn 3+4=8 wahr ist ODER 5+7=12 wahr ist, dann führe den folgenden Block aus
    print("Jo, eins von beiden passt schon.")
else:
    print("Geht ja wohl gar nicht!")

Du siehst, in Beispiel 1 wird die Anweisung aus dem else-Block ausgewählt, weil nicht beide Bedingungen wahr sind. Im zweiten Beispiel mit or begnügen wir uns damit, wenn mindestens eine Bedingung erfüllt ist. Dieses oder ist also kein entweder-oder, sondern ein sowohl-als-auch, also wie wenn ich frage “Zucker oder Milch zum Kaffee?” – Man darf nur Zucker oder Milch, aber auch beides bejahen.

Mit diesem Code kannst du weitere Szenarien mit verschiedenen Werten für a und b testen:

a = 0
b = 1

if a == b and a == 0:
    print("a und b sind beide 0!")

if a > 0 or b > 0:
    print("mind. a oder b ist größer als 0!")

Übungen

Alle Übungen mit einem (a) am Ende sollen abgegeben werden, sonst nicht.

Grundgerüst

Mit dem folgenden Code wird geprüft, ob die Variable zahl den Wert 3 hat oder nicht. Je nach dem, ob die Bedingung erfüllt ist oder nicht, wird eine andere Anweisung befolgt.

zahl = 3

if zahl == 3: #prüfe Bedingung (hier: wenn zahl 3 ist)
    print("Die Zahl ist 3.") #Anweisung, wenn erfüllt
else: #sonst 
    print("Die Zahl ist nicht 3.") #Anweisung, wenn nicht erfüllt

Übung 1

  1. Probiere den Code aus dem Grundgerüst aus.
  2. Ändere den Wert von zahl zu 4 und teste den Code erneut.
Flussdiagramm

Übung 2

Schreibe ein Skript, bei dem geprüft wird, ob eine vorgegebene Zahl nicht 3 ist. Wähle entsprechend sinnvolle Anweisungen.

Tipp
zahl = 3

if zahl != 3: # != prüft, ob etwas nicht erfüllt ist
    #passende Anweisung
else: #sonst 
    #passende Anweisung

Übung 3

Mit Python kannst du auch ein kleines Ratespiel erstellen. Dafür musst du if-else-Bedingungen verschachteln. Wie das funktioniert, klären wir an einem Beispiel erst ein mal visuell mithilfe eines sogenannten Flussdiagramms dar:

  • Nutzer wird nacheinander gefragt.
  • Seine Angabe wird gespeichert.
  • Die Bedingungen werden geprüft.

Der Nutzer soll immer wieder gefragt werden und eine Eingabe machen, dafür sorgt der folgende Teil.

#Die Konsole gibt den Text zwischen den Hochkommas aus. Die Antwort des Benutzers wird in der Variable aw gespeichert.
aw = input('Hier steht die Frage an Nutzer')

Der vollständige Code zu dem Ratespiel oben sieht so aus:

print('Willkommen zu meinem Ratespiel! Ich werde erraten, woran du denkst! Denke an ein Auto, einen Bär oder einen Menschen! Gib bitte immer ein ja oder nein als Antwort ein!\n')

aw = input('Ist es lebendig?\n')

if aw == 'nein':
    print('Es ist das Auto!\n')
else:
    if aw == 'ja':
        aw = input('Hat es vier Beine?\n')
        if aw == 'ja':
            print('Es ist der Bär!')
        else:
            print('Es ist der Mensch!\n')
  1. Probiere den Code oben aus und erkläre:
  2. Erstelle ein ähnliches Ratespiel. (a)
  3. Erstelle ein Ratespiel mit mehr Verschachtelungen. Benutze nur “ja/nein”-Fragen. (a)
  4. Vervollständige den Code unten sinnvoll (d.h. die Verzweigungen sollen bei der Auswahl des Getränkes sinnvoll angelegt werden). (a)
aw = input("Saft oder Softdrink?")

if aw == "Saft":
    aw = input("Apfelsaft oder O-Saft?")
    if aw == "Apfelsaft":
        print("Gute Wahl, Äpfel sind lecker!")
    else:
        print("O-Saft, Vitamin C pur!")
# Rest ab hier

Übung 4

if-else-Bedingungen lassen sich verschachteln, um mehr als nur genau 2 Fälle zu unterscheiden. Das kann schnell unübersichtlich werden. Man kann auch elif nutzen!

Beispiel

aw = int(input('Gib eine Zahl ein!\n')) #int() macht aus der Eingabe, die zunächst als Text angenommen wird, eine Zahl

if aw < 0:
    print('Die Zahl ist negativ.')
elif aw > 0:
    print('Die Zahl ist positiv.')
else:
    print('Hast wohl 0 eingegeben...')
  1. Probiere das Beispiel aus. Gib auch mal etwas Ungültiges ein. Was passiert?
  2. Ändere den Code so, dass geprüft wird, ob eine Zahl kleiner, gleich oder größer als 17 ist.
  3. Erstelle eine neue Version deines Ratespiels, bei dem du ein elif-Statement nutzt, um ungültige Eingaben abzufangen. Schau dir den Tipp möglichst spät an. (a)
  4. Schau dir meine Lösung unter Tipp an und erstelle ein Flussdiagramm (Begriff: siehe Übung 3) zu dem Code in dem Tipp. Der Code dort ist etwas anders als der in Übung 3. Du kannst diese Seite dafür nutzen. (a)
  5. Erstelle ein Flussdiagramm zu deiner Lösung aus Teilaufgabe 3, also zu deinem eigenen Ratespiel mit elif-Statements. (a)
Tipp

Mit meinem Ratespiel oben hätte man:

aw = input('Ist es lebendig?\n')
if aw == 'nein':
    print('Es ist das Auto!\n')
elif aw == 'ja':
    aw = input('Hat es vier Beine?\n')
    if aw == 'ja':
        print('Es ist der Bär!')
    elif aw == 'nein':
        print('Es ist der Mensch!\n')
    else:
        print('Ungültige Eingabe!\n') #warum ist das noch nötig?
else:
    print('Ungültige Eingabe!\n')

Übung 5

Erstelle einen Code der folgende Kriterien erfüllt (a):

  • Du als Programmierer:in gibst zwei Werte für zwei Variablen vor.
  • Die gespeicherten Werte werden in einem if-else-Codeblock beide geprüft.
  • Unterscheide folgende Fälle:
    • beide Bedingungen werden erfüllt
    • mindestens eine Bedingung wird erfüllt
    • keine Bedingung wird erfüllt
Grundgerüst anzeigen
a = 0 #0 stehe hier für nein
b = 1 #1 stehe hier für ja

if a == 1 and b == 1: #andere Vergleichsoperatoren sind auch erlaubt, also <,>,!=
    print("Beide Bedingungen erfüllt.")
elif a == 1 or b == 1:
    print("Mind. 1 Bedingung erfüllt.")
else:
    print("Keine Bedingung erfüllt.")
Beispiel
a = int(input("Möchtest du Milch in deinem Kaffee? Gib 1 für Ja ein und 0 für nein."))
b = int(input("Möchtest du Zucker in deinem Kaffee? Gib 1 für Ja ein und 0 für nein."))


if a == 1 and b == 1:
    print("Zucker und Milch? Igitt!")
elif a == 1 or b == 1:
    print("Naja, wenigstens nicht beides!")
else:
    print("So schmeckt der Kaffee am besten!")

# Alternative
milch = input("Möchtest du Milch in deinem Kaffee? Gib exakt ja oder nein ein.")
zucker = input("Möchtest du Zucker in deinem Kaffee? Gib exakt ja oder nein ein.")


if milch == "ja" and zucker == "ja":
    print("Zucker und Milch? Igitt!")
elif milch == "ja" or zucker == "ja":
    print("Eins von beiden geht ja noch ...") 
else:
    print("So schmeckt der Kaffee am besten! (Oder du hast eine ungültige Eingabe gemacht)")

Übung 6

[Entwurf]

Schreibe einen Kommentar

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