BProgrammierenIf ... else ... in Python

Wenn wir in Python programmieren, nutzen wir oft if-Anweisungen, um Entscheidungen zu treffen. Das ist so, als würden wir im echten Leben sagen: “Wenn es regnet, dann nehme ich einen Regenschirm mit.”

Vergleich mit if

Wie setzen wir das in Python um?

Syntax

if Bedingung:
    # Auszuführende Anweisungen, wenn die Bedingung True (wahr) ist

Beispiel

wetter = "sonnig"
 
if wetter == "sonnig":
    print("Vergessen Sie nicht, Sonnencreme aufzutragen!")

In diesem Beispiel wird die Nachricht nur dann ausgegeben, wenn das Wetter “sonnig” ist. Die Bedingung wird ausgewertet und ist entweder True (wahr), dann wir werden die Befehle im if-Block ausgeführt, oder False (falsch), dann werden sie nicht ausgeführt.

Beachten Sie, dass zwei Gleichheitszeichen verwendet werden:

  • Ein einzelnes Gleichheitszeichen = ist beim Programmieren kein Vergleich, sondern eine Wertzuweisung - z.B. oft für eine Variabel.
  • Zwei Gleichheitsszeichen == sind ein Vergleich. Also eine Frage, ob zwei Werte gleich sind.
  • Vergleichsoperatoren >, >=, <=, < können Zahlenwerte vergleichen.

Die Werte dieser Bedingungen oder Tests beim if-Statement können Sie direkt mit print() ausdrucken.

Loading...
Run

Und sonst? if ... else

Manchmal möchten wir nicht nur eine Aktion ausführen, wenn eine Bedingung wahr ist, sondern auch eine alternative Aktion, falls die Bedingung nicht erfüllt wird. Für solche Fälle verwenden wir die if ... else-Struktur.

Syntax

if Bedingung:
    # Auszuführende Anweisungen, wenn die Bedingung True (wahr) ist
else:
    # Auszuführende Anweisungen, wenn die Bedingung False (falsch) ist

Beispiel

wetter = "regnerisch"
 
if wetter == "sonnig":
    print("Vergessen Sie nicht, Sonnencreme aufzutragen!")
else:
    print("Besser einen Regenschirm mitnehmen!")

In diesem Beispiel wird die erste Nachricht ausgegeben, wenn das Wetter “sonnig” ist. Falls das Wetter jedoch nicht “sonnig” ist (also die Bedingung wetter == "sonnig" nicht erfüllt ist), wird die zweite Nachricht ausgegeben.

Aufgabe 1

Schreiben Sie ein Turtle-Programm, dass die User mit input(...) aus dieser Lektion um eine Eingabe bittet, und ein eine Treppe zeichnet, wenn sie “treppe” eingeben. Ansonsten soll das Programm mit print(...) einfach eine nette Nachricht anzeigen.

Loading...
Run

Mögliche Lösung

import turtle
eva = turtle.Turtle()
 
eingabe = input("Ihre Eingabe:")
if eingabe == "treppe":
    for i in range(4):
        eva.left(90)
        eva.forward(20)
        eva.right(90)
        eva.forward(20)

Komplett: if ... elif ... else

Es gibt auch Fälle, in denen wir mehr als zwei Möglichkeiten haben und mehrere Bedingungen prüfen wollen. Dafür können wir if ... elif ... else verwenden.

Syntax

if Bedingung1:
    # Auszuführende Anweisungen, wenn Bedingung1 True (wahr) ist
elif Bedingung2:
    # Auszuführende Anweisungen, wenn Bedingung2 True (wahr) ist
else:
    # Auszuführende Anweisungen, wenn keine der Bedingungen True (wahr) ist

Beispiel

wetter = "bewölkt"
 
if wetter == "sonnig":
    print("Vergessen Sie nicht, Sonnencreme aufzutragen!")
elif wetter == "regnerisch":
    print("Besser einen Regenschirm mitnehmen!")
else:
    print("Das Wetter ist unklar. Seien Sie auf alles vorbereitet!")

In diesem Beispiel wird die entsprechende Nachricht ausgegeben, abhängig vom Wert der Variable wetter. Es werden mehrere Bedingungen nacheinander geprüft:

  1. Ist das Wetter “sonnig”?
  2. Wenn nicht, ist es “regnerisch”?
  3. Wenn keines von beiden zutrifft, wird der Text im else-Block ausgegeben.

So können wir eine Reihe von Bedingungen prüfen und für jeden Fall unterschiedliche Anweisungen ausführen.

Aufgabe 2

Erweitern Sie Ihre Programm von Aufgabe 1 mit weiteren Figuren!

  • Die Turtle soll Drei- bis und mit Siebeneck (“dreieck”, “viereck”, etc.) zeichnen.
  • Die Turtle soll einen “kreis” zeichnen können, wenn die User das eingeben.

Aufgabe 3

Erweitern Sie Ihr Turtle-Programm weiter, sodass Ihre User eine Zahl eingeben können, und ein entsprechendes Xeck gezeichnet wird - also ein Eingabe von “5” zeichnet ein Fünfeck.

Im nächsten Block lernen Sie, was Datentypen sind. Für diese Aufgabe ist bereits folgende Info wichtig: Eine Eingabe wird immer als Zeichenkette interpretiert, nicht als Zahl. Hierzu zwei Tipps:

  1. Python hängt an Zeichenketten viele Funktion an, sogenannte “Methoden”. variabelname.isdigit() testet beispielsweise, ob eine Zeichenkette nur Zahlen enthält, und wird je nachdem als True oder False ausgewertet. Ein Beispiel:
Loading...
Run
  1. Sie können eine Eingabe aber mit der Funktion int() in eine natürliche Zahl umwandeln.

Aufgabe 4

Den Rest einer Division können Sie mit dem “Modulo”-Operator % ausrechnen.

Loading...
Run

Nun Ihr Auftrag, falls Sie ihn annehmen: Addieren Sie alle Zahlen bis 100, die restlos durch 3 teilbar sind und geben Sie das Ergebnis aus!

Lösung

sum = 0
 
for i in range(101):
	if i % 3 == 0:
		sum = sum + i
print(sum)

Einfache boolesche Algebra

Sie können mehrere Wahrheitstests verbinden. Dazu helfen Ihnen folgende Schlagwörter:

not kehrt den Wahrheitswert um

Loading...
Run

and fragt, ob beide Wahrheitstests wahr sind

Loading...
Run

or fragt, ob einer der Wahrheitstests wahr ist

Loading...
Run

Sie kennen die Logik von or, and und not von den Logikgates, die wir zu einem Addierer verbaut haben. In der Mathematik kennen Sie das vielleicht aus der Mengelehre unter dem Schlagwort “boolesche Algebra”.

svg alt tag

Entsprechend heissen die Datentypen von True und False auch “boolean”.

Aufgabe 5

Ändern Sie Ihre Lösung von Aufgabe 4 so ab, dass Sie alle Zahlen bis 100 aufaddieren, die zwar restlos durch 5 teilbar sind, aber nicht restlos durch 3 teilbar sind!

Lösung

sum = 0
 
for i in range(101):
	if i % 5 == 0 and not i % 3 == 0:
		sum = sum + i
print(sum)

Zusammenfassung

Theorie: if ... elif ... else-Selektion

Selektionen funktionieren immer mit Bedingungen, oft auch Wahrheitstests genannt, die als Gesamtheit entweder True (wahr) oder False (falsch) sind. Je nachdem werden andere Teile des Programms ausgeführt.

if Bedingung1:
    # Auszuführende Anweisungen, wenn Bedingung1 True (wahr) ist
elif Bedingung2:
    # Auszuführende Anweisungen, wenn Bedingung2 True (wahr) ist
else:
    # Auszuführende Anweisungen, wenn keine der Bedingungen True (wahr) ist

Vergleichsoperatoren für Tests:

  • Zwei Gleichheitszeichen (==) sind ein Vergleich:
    x = "beispiel" # Ein Gleichheitszeichen ist eine Wertzuweisung. 
     
    # Zwei Gleichheitszeichen sind ein Vergleich
    if x == "beispiel":
    	print("x hat den gleichen Wert wie 'Beispiel'!")
     
    Wir können das Ergebnis dieses Vergleichs auch direkt anzeigen:
    print(x == "beispiel") # Das druck True aus
    print(x == "sonstetwas") # Das druck False aus
  • Vergleichszeichen (<, >, <=, >=) vergleichen Zahlen
    y = 5
    print(y > 3) # Das wertet zu True aus
    print(y <= 4) # Das wertet zu False aus