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- Anweisung

Die 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.

Fuchsienblüte (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.

Loading...
AntwortIn Python und in den meisten Programmiersprachen wird das doppelte Gleichheitszeichen (==) 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.

Flussdiagram Blütenblattfarbe

Flussdiagramm if-Anweisung

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)

Flussdiagramm-Aufgabe Ersetze zahl

a) Schreibe das Programm zum Flussdiagramm oben.

Loading...
AntwortFalls die Zahl 0 ist, gibt es keine Ausgabe. Die Bedingungen 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.
Gut zu wissenWenn du verstehst, wie separate Bedingungen in einem Programm funktionieren und sich gegenseitig ausschliessen, kannst du besser steuern, wie Entscheidungen im Codefluss getroffen werden. Dies hilft dir, unbeabsichtigte Code-Ausführungen zu vermeiden, besonders in komplexen Bedingungsstrukturen. Denke immer daran, dass das sorgfältige Überprüfen und Testen deines Codes notwendig ist, um alle möglichen Fälle korrekt zu behandeln.

if-else-Verzweigung

Manchmal 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:

Flussdiagramm if-else-Verzweigung

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!

Loading...
Gut zu wissenWie du siehst, kannst du verschachtelte bedingte Anweisungen nutzen, um komplexere Entscheidungsstrukturen in deinem Code zu implementieren. In unserem Beispiel prüft die äussere 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:

  • Insektenfresser (z.B. Braunbrustigel, Erinaceus europaeus)
  • Fledertiere (z.B. Grosses Mausohr, Myotis myotis)
  • Hasentiere (z.B. Wildkaninchen, Oryctolagus cuniculus)
  • Nagetiere (z.B. Siebenschläfer, Glis glis)
  • Raubtiere (z.B. Eurasischer Luchs, Lynx lynx)
  • Paarhufer (z.B. Wildschwein, Sus scrofa)

Nachfolgend siehst du einen Bestimmungsschlüssel für diese sechs Ordnungen.

MerkmalOrdnung
1Tiere mit Flughäuten zwischen Armen, Beinen und SchwanzFledertiere
1*Ohne Flughäute-> 2
2Paarige ZehenPaarhufer
2*Mehr als zwei Zehen-> 3
3Schnauze rüsselartig verlängert oder Rücken mit Stacheln besetztInsektenfresser
3*Schnauze stumpf; Rücken ohne Stacheln-> 4
4Ohren sehr lang; Schwanz stummelartig kurzHasenartige
4*Ohren nicht besonders lang; Schwanz nicht stummelartig-> 5
5Körper gedrungen; auffallende NagezähneNagetiere
5*Körper langgestreckt und schlank oder Tier sehr gross; kräftige EckzähneRaubtiere

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:

  • Nein: Hasenartige sind keine Tiere mit Flughäuten zwischen Armen, Beinen und Schwanz,
  • Nein: Hasenartige haben keine paarigen Zehen,
  • Nein: Hasenartige haben weder eine rüsselartig verlängerte Schnauze noch einen mit Stacheln besetzten Rücken,
  • Ja: Hasenartige haben sehr lange Ohren und einen stummelartig kurzen Schwanz, und ist fertig.

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
Loading...

Was du gelernt hast

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

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c3a8286 (Mon, 14 Oct 2024 13:30:28 GMT)