if-(else-)statements
Unsere bisherigen Python-Programme werden beim Ausführen von vorne beginnend Zeile für Zeile abgearbeitet.
Oft sollen gewisse Programmteile aber nur unter gewissen Bedingungen ausgeführt werden. Das geht in Python durch sogenannte if-statements bzw. if-else-statements.
Erklärvideo zu if-statements und if-else-statements
Schau dir das folgende Video zu if- und if-else-statements an.
Video "Einführung if und if-else"
Hintergrundinformation: Zwei Stunden Tageslicht pro Tag minimieren laut wissenschaftlicher Studien das Risiko, kurzsichtig zu werden, siehe Deutschlandfunk Kultur: Immer mehr Kinder werden kurzsichtig.
Wesentliche Punkte aus dem Video
if
-statement: Der um zusätzliche 4 Leerschläge eingerückte Code-Block direkt nach der if
-Zeile wird ausgeführt, falls die Bedingung zwischen if
und :
den Wahrheitswert True
hat, wenn man die aktuellen Werte der Variablen einsetzt. Wer mag, kann den Doppelpunkt :
als then
lesen.
if
-else
-statement: Der eingerückte Code-Block direkt nach der if
-Zeile wird ausgeführt, falls die angegebene Bedingung wahr ist, sonst wird der eingerückte Code-Block nach der Zeile else:
ausgeführt.
Danach geht es jeweils mit dem normal eingerückten Code weiter.
Einrückungen sind äusserst wichtig in Python! Beachte, dass im Programm aus dem Video drei Zeilen um genau 4 Leerschläge eingerückt sind.
In der Standard-Einstellung von Visual Studio Code kannst du solche Einrückungen (um Vielfache von 4) leicht mit Tab
erzeugen (und mit Shift+Tab
rückgängig machen).
Neben falschen Einrückungen sind auch vergessene Doppelpunkte eine beliebte Fehlerquelle.
Aufgabe zu if-else
(1) Schreibe ein Quiz-Programm mit mindestens zwei Quiz-Fragen deiner Wahl (möglichst einmal mit Eingabe einer Zahl und einmal mit Eingabe eines Strings).
Nach jeder Eingabe soll der Benutzer erfahren, ob er recht hatte, und sonst die richtige Antwort erfahren.
(Auch wenn du dich daran erinnerst: Schau nicht im Abschnitt über Wahrheitswerte etc. das dortige Quiz-Programm nach, sondern versuche das Programm eigenständig neu zu schreiben!)
(2) Definiere am Anfang des Programms eine Variable durch richtigeAntworten = 0
. Verwende diese, um dem Benutzer am Ende mitzuteilen, wie viele der Antworten er richtig beantwortet hat. Diese Angabe darf auch in Prozent erfolgen.
(3) Teste dein Programm!
Aufgabe zu if-else mit logischen Verknüpfungen: Schaltjahr
ACHTUNG: Die Aufgabe ist von der Logik her relativ kompliziert; der erste Hinweis entschärft dieses Problem.
Ist eine Jahreszahl durch 4 teilbar, so handelt es sich um ein Schaltjahr, es sei denn, die Jahreszahl ist durch 100, aber nicht durch 400 teilbar.
(Diese komplizerte Regel sorgt grob gesagt dafür, dass die Frühlingstagundnachtgleiche immer am selben Tag des Kalenderjahres stattfindet, nämlich dem 21. März; für genauere Informationen siehe https://de.wikipedia.org/wiki/Schaltjahr#Gregorianischer_Kalender.)
Ersetze die Fragezeichen im folgenden Python-Programm durch einen booleschen Ausdruck, so dass es korrekt ausgibt, ob die Eingabe ein Schaltjahr ist oder nicht. Teste deine Vermutung durch Eingabe der Jahreszahlen 7, 32, 300, 400.
- schaltjahr.py
jahr = int(input("Jahreszahl: ")) if ????: print(str(jahr) + " ist kein Schaltjahr.") else: print(str(jahr) + " ist ein Schaltjahr.")
if-(else-)-statements sind Kontrollstrukturen
If-statements und if-else-statements stellen eine wichtige Kontrollstruktur in der Programmierung dar.
Sie kontrollieren bzw. steuern den Ablauf eines Programms.
Bald werden wir noch die Kontrollstrukturen Schleife (= loop) (oder Iteration) und eventuell Rekursion (= recursion) kennenlernen.
Bereits kennengelernt haben wir die “offensichtlichen” Kontrollstrukturen Sequenz (einfach diverse Anweisungen hintereinander, die entsprechend nacheinander ausgeführt werden) und Blockstruktur (etwa die beiden eingerückten Code-Blocks in einem if-else-statement).
Zur Terminologie
Ich verwende hier die Begriffe if-statement und if-else-statement, da man sofort weiss, was programmiertechnisch gemeint ist.
Verbreitet (aber meiner Meinung nach weniger einprägsam) sind auch die folgenden Bezeichnungen:
- bedingte Anweisung statt if-statement, da eine Anweisung (oder ein Block von Anweisungen) nur unter einer Bedingung durchgeführt wird;
- Verzweigung statt if-else-statement, da der Programmablauf verzweigt (zwei mögliche Wege), am Ende kommen sie aber wieder zusammen; vgl. bedingte Anweisung und Verzweigung (dort ist auch ein “Aktivitätsdiagramm”, das den Begriff Verzweigung gut illustriert);
- if-Selektion oder if-Auswahl statt if-statement (da ein Codeblock nur dann ausgewählt und ausgeführt wird, wenn die sogenannte if-Bedingung zutrifft);
- if-(else-)Anweisung statt if-(else-)statement;
- etc.
Erklärvideo zu verschachtelten if-else-statements
Schau dir das folgende Video an.
Video "Verschachtelte if-statements und elif"
Zustände des Programms aus dem Video:
Aufgabe zu if-else-Verschachtelung und elif
(1) Schreibe ein Programm
- mit verschachtelten if-else-statements (und nicht 5 verschiedenen if-statements),
das vom Benutzer eine Temperaturangabe einliest und dann mitteilt, ob es kalt
oder kühl
oder behaglich
oder warm
oder heiss
ist. In welchem Temperaturbereich welches Temperaturempfinden eintritt, ist dir überlassen.
Bemerkung: Es gibt viele Möglichkeiten der Verschachtelung. Wenn du willst, kannst du mehrere finden.
(2) Ändere dein Programm nun so, dass du alle else
-if
-Kombinationen zu elif
s verschmilzt!
(3) Teste dein Programm: Für jeden Temperaturbereich ist mindestens ein Test durchzuführen.
Aufgabe: Lineare Gleichungen (in Standardform) vom Computer lösen lassen
(1) Schreibe ein Programm, dass vom Benutzer zwei Zahlen $a$ und $b$ einliest. Das Programm soll ausgegeben, wie viele Lösungen die lineare Gleichung $ax+b=0$ hat. Danach sollen alle Lösungen ausgegeben werden.
Alle Spezialfälle sind zu behandeln (denke an Fälle wie $0X+2=0$ und $0X+0=0$).
(2) Teste dein Programm!
Bonus-Material
Schau, was du auf
https://www.w3schools.com/python/python_conditions.asp
zusätzlich zu if-statements lernen kannst. (Fehlt hier etwas Wichtiges?)
Dort kannst du auch viele Beispiele direkt im Browser ausprobieren. Finde heraus, wie das geht!
Bearbeite die Übungen am Ende der Seite.
Stell dir selbst ein Problem, das du mit den bereits vorhandenen Programmierkenntnissen lösen kannst.
Wenn du es mir mitteilst und es mir gefällt, nehme ich es gerne (je nach Wunsch mit oder ohne Angabe des Autors bzw. der Autorin) in diesen Kurs auf!