Verschiedene Wege
Bislang laufen deine Programme Zeile für Zeile durch. – Das soll sich nun ändern.
Eine Verzweigung ist eine Möglichkeit, deinem Programm zu sagen, dass es unter angegebenen Bedingungen unterschiedliche Aktionen ausführen soll. Eine Verzweigung ist mit einer Entscheidung zu vergleichen, die du triffst und abhängig von der Situation verschiedene Dinge tust.
In Python kannst du eine Verzweigung mit der „if“-Anweisung erstellen. Die „if“-Anweisung prüft eine Bedingung und führt eine Aktion aus, wenn die Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, wird die Aktion nicht ausgeführt.
Beispiel
alter = int(input("Gib dein Alter ein: ")) # Abfrage des Alters und speichern der Antwort in "alter" if alter > 40: # Prüfung, ob das alter größer 40 ist. Falls ja: print("Du bist alt.") # Ausgabe von "Du bist alt.", falls das eingegebene Alter größer 40 ist.
Anmerkungen
- Der Teil des Programms, die bei erfüllter Bedingung ausgeführt werden soll muss wie im Beispiel eingerückt werden. Umfasst der Teil mehrere Zeilen, so müssen sie alle gleich eingerückt werden.
- Der „normale“ Abstand mit der „Space“-Taste darf hier nicht mit der Einrückung über die Tabulatortaste kombiniert werden.
- Die Vergleichsoperatoren in Python sind „<„(kleiner), „>“(größer), „<=“(kleiner oder gleich), „>=“(größer oder gleich), „==“(gleich) und „!=“(ungleich).
Soll unter einer Bedingung ein Teil des Quelltextes ausgeführt werden und bei Nichterfüllung ein anderer, so kannst auch eine „else“-Anweisung hinzufügen.
Beispiel
alter = int(input("Gib dein Alter ein: ")) # Abfrage des Alters und speichern der Antwort in "alter"
if alter > 11: # Prüfung, ob das alter größer 11 ist. Falls ja:
print("Du darfst Avatar sehen.") # Ausgabe von ""Du darfst Avatar sehen."", falls das eingegebene Alter größer 11 ist.
else: # Ansonsten:
print("Du darfst Avatar nicht sehen.") # Ausgabe von "Du darfst Avatar nicht sehen."
In diesem Beispiel wird die Bedingung „zahl > 11“ überprüft. Da die Bedingung nicht erfüllt ist, wird die Nachricht „Die Zahl ist kleiner oder gleich 10.“ ausgegeben.
Geht immer!
Natürlich lassen sich Verzweigungen auch mit den Grafikbefehlen kombinieren.
Beispiel
from picoboy import PicoBoy import time import _thread pb = PicoBoy() # Den Teil oberhalb dieser Zeile nicht verändern pb.fill(0) # Display schwarz (= Farbe 0) füllen pb.show() # Displayspeicher auf das Display übertragen und anzeigen form = int(input("Rechteck(1) oder Dreieck(andere Zahl)")) # Abfrage der Auswahl und speichern der Antwort in "form" if form == 1: # Prüfung, ob "form" gleich 1 ist. pb.rect(0,0,127,63,1) # Falls Ja: Rechteck in den Displayspeicher schreiben else: # Ansonsten: pb.line(0,63,63,0,1) # Drei Linien zeichnen, die ein Dreieck ergeben pb.line(63,0,127,63,1) pb.line(0,63,127,63,1) pb.show() # Displayspeicher auf das Display übertragen und anzeigen
Anmerkung:
- Im Falle „form ungleich 1“ soll ein Dreieck gezeichnet werden. Da dazu mehrere Programmzeilen erforderlich sind, sind mehrere Zeilen eingerückt, die nur in diesem Fall ausgeführt werden.
- „pb.show()“ soll jedoch auf jeden Fall ausgeführt werden und wird daher nicht eingerückt geschrieben. Es wird ausgeführt, nachdem der if-else-Block durchlaufen ist.
Logische Operatoren
In vielen Fällen ist es sinnvoll mehrere Bedingungen zu Verknüpfen, um zu einer Entscheidung zu kommen. Betrachte das folgende Programm „Sollte ich Avatar ansehen?“.
Beispiel
alter = int(input("Gib dein Alter ein: ")) # Abfrage des Alters und speichern der Antwort in "alter"
if alter > 11 and alter < 25: # Die Bedingung ist erfüllt, wenn beide Teilbedingungen erfüllt sind.
print("Du solltest Avatar sehen.")
else:
print("Du solltest Avatar nicht sehen.")
Neben „and“ gibt es noch weitere Möglichkeiten solche logischen Aussagen durch verschiedene Operatoren zu verknüpfen. Hier ein Überblick:
AND
a | b | a and b |
---|---|---|
False | False | False |
False | True | False |
True | False | False |
True | True | True |
OR
a | b | a or b |
---|---|---|
False | False | False |
False | True | True |
True | False | True |
True | True | True |
XOR
a | b | a ^ b |
---|---|---|
False | False | False |
False | True | True |
True | False | True |
True | True | False |
NOT
a | not a |
---|---|
False | True |
True | False |
Schachteln
Du kannst auch mehre solcher Operatoren in einem Ausdruck verwenden. Es besteht die Möglichkeit zur Klammerung, die die selbe Bedeutung wie in der Mathematik hat. Beispiele:
- not(a < 10 and b > 25)
- (x < 128 and x >= 0) and (y < 64 and y >= 0)
Du kannst eine Abfrage mehrerer Bedingungen allerdings auch durch die Verschachtelung von Verzweigungen lösen. Dabei steht eine Verzweigung innerhalb einer anderen, wie du an der weiteren Einrückung erkennen kannst.
alter = int(input("Gib dein Alter ein: ")) if alter > 40: print("Du bist alt.") if alter > 90: print("Wirklich sehr alt.") else: print("Du bist ja noch ein Kind")
Hier geht es weiter.