At My Fingertips
Hier lernst du, wie du in deinen Programmen Entscheidungen treffen kannst. Vergleichbar mit einer Weggabelung, ermöglichen Verzweigungen deinem Code, je nach bestimmten Bedingungen unterschiedliche Pfade zu verfolgen.
if
- AnweisungDie einfachste Variante einer Verzweigung ist die sogenannte if
-Anweisung. Sie besteht aus einer <Bedingung>
sowie einer oder mehreren <Anweisungen>
. Hier ist eine grundlegende Schablone für die if
-Anweisung in Python:
if <Bedingung>:
<Anweisung 1>
<Anweisung 2>
...
<Anweisung n>
Die if
-Anweisung untersucht, ob eine <Bedingung>
wahr (True
) oder falsch (False
) ist. Wenn die <Bedingung>
wahr ist, wird der eingerückte Block ausgeführt, andernfalls wird der eingerückte Block übersprungen und das Programm auf der nicht eingerückten Programmzeile weiter ausgeführt. Beachte, dass nach der <Bedingung>
ein Doppelpunkt folgt.
Die beiden Wahrheitswerte True
und False
bilden den Datentyp Boolean (bool
). Der Name "Boolean" geht auf den britischen Mathematiker und Logiker George Boole zurück, der im 19. Jahrhundert bedeutende Arbeiten zur Logik und zur algebraischen Darstellung von Aussagen gemacht hat. Dank Booles Arbeit können wir heute komplexe Bedingungen in der Programmierung formulieren und verstehen.
Das folgende Beispiel illustriert die Verwendung einer if
-Anweisung:
Du lernst gerade für eine Botanikprüfung und möchtest wissen, wie die verschiedenen Blütenblätter der Fuchsie (siehe Bild unten) heissen.
(Quelle: https://de.wikipedia.org/wiki/Fuchsien#/media/Datei:Fuchsie-Bl%C3%BCte_(1).jpg)
Mit dem kleinen Programm in der Codezelle unten kannst du erfragen, wie die violetten Blütenblätter heissen. Der String, den die Benutzerin/der Benutzer eingibt, wird in der Variablen farbe
gespeichert. Anschliessend wird mit der if
-Anweisung überprüft, ob die eingegebene Farbe "Purpur"
entspricht. Wenn dies der Fall ist, wird die Nachricht "Es handelt sich um ein Kronblatt."
ausgegeben.
Probiere das gleich mal aus!
Aufgabe 1
a) Ersetze _
in der Codezelle durch den String "Purpur"
, führe die Codezelle aus und schaue, was passiert.
b) Ergänze nun das Programm so, dass auch die Farben Pink
(für die Kelchblätter) und Gelb
(für die Staubblätter) abgefragt werden können und jeweils die passende print
-Anweisung ausgegeben wird.
==
) verwendet, um den Vergleich zweier Werte auf Gleichheit durchzuführen, während das einfache Gleichheitszeichen (=
) verwendet wird, um einer Variablen einen Wert zuzuweisen. Wenn du farbe = "Purpur"
schreiben würdest, würde dies bedeuten, dass du der Variablen farbe
den Wert "Purpur" zuweist. Das ist jedoch nicht das, was wir in diesem Kontext tun wollen. Wir möchten herausfinden, ob der Wert in der Variablen farbe
genau gleich "Purpur" ist. Der Ausdruck farbe == "Purpur"
entspricht somit der Bedingung, die zu True
oder False
ausgewertet wird. Wenn diese Bedingung True
ergibt, wird der nachfolgende Code innerhalb der if
-Anweisung ausgeführt.Um besser zu verstehen, wie die if
-Anweisung funktioniert, können wir sie in Form eines Flussdiagramms darstellen: links konkret auf unser Beispiel bezogen und rechts die allgemeine Darstellung.
Die zu überprüfende Bedingung steht immer in einem Rhombus. Von diesem gehen zwei Pfeile aus: einer für den Fall, dass die Bedingung erfüllt ist (True
) und einer für den Fall, dass die Bedingung nicht erfüllt ist (False
). Die restlichen Anweisungen stehen in rechteckigen Kästchen.
Aufgabe 2
(adaptiert von Urs Hauser, https://webskin.ch/Dokumente/Lerneinheit_7_Verzweigungen_bedingte_Schleifen/LE7_Verzweigungen.pdf)
a) Schreibe das Programm zum Flussdiagramm oben.
zahl > 0
und zahl < 0
sind gegenseitig ausschliessend (engl. mutually exclusive), d.h., keine Zahl kann gleichzeitig grösser und kleiner als 0 sein. Wenn zahl = 0
, dann werden beide Bedingungen als falsch ausgewertet, und es wird keine print
-Anweisung ausgeführt. Dies ist der einzige Fall, bei dem keine Ausgabe erfolgt, da 0 weder positiv noch negativ ist.if-else
-VerzweigungManchmal möchtest du nicht nur eine Aktion ausführen, wenn die Bedingung wahr ist, sondern auch eine alternative Aktion, wenn die Bedingung falsch ist. Hier kommt die if-else
-Verzweigung ins Spiel. Mit ihr kannst du zwei verschiedene Codeblöcke ausführen, abhängig davon, ob die Bedingung wahr oder falsch ist.
In der Aufgabe oben wird geprüft, ob zahl > 0
und ob zahl < 0
. Wenn schon klar ist, dass eine Zahl positiv ist, kann man sich die zweite if
-Anweisung sparen und stattdessend die if-else
-Verzweigung verwenden!
zahl = _ # Ersetze _ durch eine beliebige Zahl
if zahl > 0:
print("Die Zahl ist positiv.")
else:
print("Die Zahl ist negativ.")
Vergiss auch hier nicht die Doppelpunkte nach if
und else
, sowie das Einrücken der auszuführenden Blöcke!
Das Flussdiagramm sieht verallgemeinert so aus:
Aufgabe 3
Ergänze das Programm von oben so, dass im entsprechenden Fall die Meldung "Die Zahl ist 0." ausgegeben wird.
Beachte: Ist die Zahl 0, müssen die beiden anderen Fälle nicht mehr geprüft werden!
if
-Anweisung zuerst, ob eine Zahl gleich 0 ist. Nur wenn dies nicht zutrifft, wird eine weitere if
-Anweisung innerhalb des else
-Blocks ausgeführt, um zu prüfen, ob die Zahl positiv oder negativ ist. Dies ermöglicht es, abhängig von verschiedenen Bedingungen unterschiedliche Aktionen durchzuführen. Verschachtelte Anweisungen helfen dir, deinen Code logisch zu strukturieren und auf mehrere Bedingungen zu reagieren.Kommen wir nun zurück zur Biologie:
Im Biologieunterricht hast du mit grosser Sicherheit die Klasse der Säugetiere kennengelernt. In der Schweiz kommen die folgenden sechs Ordnungen vor:
Nachfolgend siehst du einen Bestimmungsschlüssel für diese sechs Ordnungen.
Merkmal | Ordnung | |
---|---|---|
1 | Tiere mit Flughäuten zwischen Armen, Beinen und Schwanz | Fledertiere |
1* | Ohne Flughäute | -> 2 |
2 | Paarige Zehen | Paarhufer |
2* | Mehr als zwei Zehen | -> 3 |
3 | Schnauze rüsselartig verlängert oder Rücken mit Stacheln besetzt | Insektenfresser |
3* | Schnauze stumpf; Rücken ohne Stacheln | -> 4 |
4 | Ohren sehr lang; Schwanz stummelartig kurz | Hasenartige |
4* | Ohren nicht besonders lang; Schwanz nicht stummelartig | -> 5 |
5 | Körper gedrungen; auffallende Nagezähne | Nagetiere |
5* | Körper langgestreckt und schlank oder Tier sehr gross; kräftige Eckzähne | Raubtiere |
Aufgabe 4
Schreibe eine Funktion bestimmungsschluessel
, welche if-else
-Verzweigungen nutzt. Die Funktion soll eine von den sechs vorgegebenen N/J
-Listen (kurz für Ja/Nein-Listen) entgegennehmen und zurückgeben (mit return
) können, zu welcher Ordnung diese N/J
-Liste passt.
Beispiel: Die N/J
-Liste für die Ordnung der Hasenartigen lautet ["N", "N", "N", "J"], denn geht man den Bestimmungsschlüssel von oben nach unten durch, antwortet man der Reihe nach mit:
Die sechs N/J
-Listen und der Kopf der Funktion sind unten bereits vorgegeben.
Tipp: Um auf einzelne Elemente einer Liste zuzugreifen, verwendest du den Index des gewünschten Elements in eckigen Klammern ([]). Dabei ist zu beachten, dass die Indizierung in den meisten Programmiersprachen bei 0 beginnt. Das bedeutet, das erste Element hat den Index 0, das zweite den Index 1 und so weiter.
meine_liste = [10, 20, 30]
erstes_element = meine_liste[0] # Wert: 10
Du hast wiederum grundlegende Konzepte der Programmierung kennengelernt:
Du weisst nun, wie die if
-Anweisung funktioniert und wie sie genutzt wird, um Code basierend auf Bedingungen auszuführen oder zu überspringen.
Du hast gesehen, wie Flussdiagramme verwendet werden können, um den Programmfluss von if
-Anweisungen zu visualisieren und Entscheidungen auf eine grafische Weise darzustellen.
Wir haben den Datentyp Boolean behandelt, der nur die Werte True
oder False
annehmen kann und in bedingten Anweisungen eine zentrale Rolle spielt.
Du hast die if-else
-Verzweigung kennengelernt, die es ermöglicht, alternative Aktionen auszuführen, wenn eine Bedingung nicht erfüllt ist.
Mit diesen Konzepten bist du bereit, in der Programmierung Entscheidungen zu treffen und deinen Code an verschiedene Situationen anzupassen.
This activity has been created by Lichtsteiner and is licensed under CC BY-SA 4.0.
Verzweigungen
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version c3a8286 (Mon, 14 Oct 2024 13:30:28 GMT)