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!")
if wetter == "regnerisch":
print("Nehmen Sie einen Regenschirm mit!")
In diesem Beispiel wird die Nachricht nur dann ausgegeben, wenn die Variabel Wetter den String “sonnig” enthält. Die Bedingung wetter == "sonnig"
wird ausgewertet und ist entweder True
(wahr) oder False
(falsch). Die Befehle im if
-Block werden ausgeführt, wenn die Bedingung True
ist, nicht aber, wenn sie False
ist.
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.
Sie können auch die reservierten Wörter True
und False
direkt benutzen, auch wenn das in diesem Fall wenig Sinn ergibt… 🤷
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 for-print
Schreiben Sie ein Programm, dass alle Zahlen von 0 bis 10 durchgeht und mit print()
ausdruckt.
- Bei 5 soll das Programm zusätzlich “Wir sind in der Hälfte!” ausdrucken.
- Bei allen Zahlen die grösser als 7 sind, soll das Programm zusätzlich “Fast geschafft!” ausdrucken.
Mögliche Lösung
for i in range(11): print(i) if i == 5: print("Wir sind in der Hälfte!") if i > 7: print("Fast geschafft!")
Aufgabe Inputtreppe
Schreiben Sie ein Turtle-Programm, dass die User 10-mal mit input(...)
aus dieser Lektion um eine Eingabe bittet und und Nummer des aktuellen Durchgangs anzeigt. Wenn die Nutzer “treppe” eingeben, zeichnet eva eine Treppe der Länge vier. Ansonsten soll das Programm eine nette Nachricht mit dem Input der User anzeigen.
Mögliche Lösung
import turtle eva = turtle.Turtle() for i in range(1,11): eingabe = input("Wir sind bei Durchgang " + str(i) + ". Ihre Eingabe bitte:") if eingabe == "treppe": for i in range(4): eva.left(90) eva.forward(20) eva.right(90) eva.forward(20) else: print("Sie haben '" + eingabe + "' eingegeben.")
Komplett: if ... elif ... else
Es gibt auch Fälle, in denen wir mehr als zwei Möglichkeiten haben und mehrere Bedingungen prüfen wollen. Wir können mit if ... elif ... else
mehrere Bedingungen verketten. Sobald eine
Syntax
if Bedingung1:
# Auszuführende Anweisungen, wenn Bedingung1 True ist
elif Bedingung2:
# Auszuführende Anweisungen, wenn Bedingung2 True ist (und alle vorherigen Bedingungen False)
elif Bedingung3:
# Auszuführende Anweisungen, wenn Bedingung3 True ist (und alle vorherigen Bedingungen False)
else:
# Auszuführende Anweisungen, wenn keine der Bedingungen True 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:
- Ist das Wetter “sonnig”?
- Wenn nicht, ist es “regnerisch”?
- 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.
Beachten Sie, dass bei if ... elif ... else
-Ketten jeweils nur die erste wahre Bedingung ausgeführt wird. Eine kleine Demonstration hierzu:
- Führen Sie das Programm aus und schauen Sie den Output an.
- Ändern Sie das zweite
if
zu einemelif
. Führen Sie das Programm erneut aus. Was hat sich verändert?
Aufgabe Inputfiguren
Erweitern Sie Ihr Turtle-Treppenprogramm 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 Input Anzahl Ecken
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 / String interpretiert, nicht als Zahl. Hierzu zwei Tipps:
- 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 alsTrue
oderFalse
ausgewertet. Ein Beispiel:
- Sie können eine Eingabe mit der Funktion
int()
in eine natürliche Zahl umwandeln.
Aufgabe Modulo
Den Rest einer Division können Sie mit dem “Modulo”-Operator %
ausrechnen.
Schreiben Sie ein Programm, dass alle Zahlen von 1 bis 10 ausdruckkt, die restlos durch 3 teilbar sind.
Lösung
for i in range(1, 11): if i % 3 == 0: print(i)
Aufgabe Modulosum
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
and
fragt, ob beide Wahrheitstests wahr sind
or
fragt, ob einer der Wahrheitstests wahr ist
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”.
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
-SelektionSelektionen 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 Zahleny = 5 print(y > 3) # Das wertet zu True aus print(y <= 4) # Das wertet zu False aus