Diese Lektion wird es dir ermöglichen, das komplexe Überprüfen von Fällen wesentlich eleganter zu machen, wobei du nur zwei neue Teile der Python-Sprache verwendest.
- nach einem
if «C»
Statement wird einelse
Statement nur ausgeführt, wennC
false ist - Du kannst Boolesche Bedingungen kombinieren, indem du
A and B
,A or B
, undnot A
verwendest
else
Eine sehr übliche Aufgabe beim Schreiben von Programmen ist es, dass du einige Bedingungen überprüfen möchtest, und entweder eine bestimmte Handlung ausführen möchtest oder eine andere, abhängig davon, ob die Bedingung wahr ist oder falsch. Früher verlangte eine Übung etwas zu tun, falls age
kleiner als 0 war,
etwas anderes, wenn age
nicht kleiner als 0 war; der Code war etwa
if age >= 0: print('Du bist nicht unbedingt ein Zeitreisender') if age < 0: print('Du bist ein Zeitreisender')Jetzt schreiben wir es neu und verwenden
else
:
Allgemeiner kannst du auch else
mit dem folgenden Paar von Block Statements verwenden:
if «test»: «true-body» # an indented block else: «false-body» # another indented blockPython beurteilt den Test. Wenn er wahr ist, dann wird der True-Körper ausgeführt, und wenn er falsch ist, wird der False-Body ausgeführt.
Die Philosophie von else
Wir erhalten keine neuen Fähigkeiten durch else
, aber es macht Code viel leichter zu lesen, debuggen und zu pflegen. Hier sind zwei Codefragmente, die das gleiche machen.
Version A
if height < 256: print('Too short for this ride') else: print('Welcome aboard!') |
Version B
if height < 256: print('Too short for this ride') if height >= 256: print('Welcome aboard!') |
Beide machen das gleiche, und B braucht nicht einmal else
. Die meisten Programmierer würden allerdings einig darüber sein, dass A besser ist. So ist es zum Beispiel bei A so, dass das Ändern einer Bedingung (z.B. 128 zu verwenden anstatt von 256) nur eine Änderung des Codes benötigt anstatt zwei. Außerdem kann A sofort verstanden werden von einem menschlichen Leser, im Gegensatz zu B, das darauf überprüft werden muss, ob beide oder keine der Bedingungen wahr sein können.
Python hat eine eingebaute Funktion abs(x), um den absoluten Wert von x zu berechnen. Die Auswertung der vorangegangenen Übung verhindert, dass du sie jetzt verwenden kannst, aber du wirst sie später verwenden können. |
elif
Python führt ein weiteres Schlüsselwort ein, elif
, um es einfacher zu machen, mehrere Bedingungen hintereinander zu checken. Die einfachste Form von elif
ist die Folgende:
if «test1»: «body1» # runs if test1 is true elif «test2»: «body2» # runs if test1 is false and test2 is trueWie du vielleicht schon geraten hast, steht
elif
kurz für "else if", da es das gleiche ist, wie ein if Statement in einen else Block zu verpacken. Es führt allerdings zu kürzerem Code und weniger eingerückten Zeilen, was dein Programm leichter zu lesen, debuggen und bearbeiten macht. Außerdem kannst du eine beliebige Anzahl von elif Statements am Stück kombinieren und sogar wahlweise ein else
Statement ans Ende fügen:
if «test1»: «body1» # runs if test1 is true elif «test2»: «body2» # runs if test1 is false and test2 is true elif «test3»: «body3» # runs if test1 & test2 both false and test3 is true else: # these last two lines are optional «else-body» # runs if ALL the tests are falseHier ist ein Beispiel mit
elif
, welches innerhalb einer Schleife benutzt wird. Kannst du die Ausgabe voraussagen bevor sie läuft?
Boolesche Operatoren: and
, or
, not
Du kannst Boolesche Ausdrücke kombinieren, indem du "and
", "or
", und "not
" verwendest, die genauso funktionieren wie in normaler Sprache.
- Der Ausdruck
A and B
ist wahr, wenn sowohlA
als auchB
wahr sind, und falsch, wenn eines der beiden falsch ist. (Zum Beispiel wirst du nass, wenn es regnetund
du deinen Schirm vergessen hast.) - Der Ausdruck
A or B
ist wahr, wenn entwederA
wahr ist, oderB
wahr ist, und falsch, wenn beide falsch sind. (Zum Beispiel ist die Schule geschlossen, wenn es ein gesetzlicher Feiertag istoder
wenn es ein Wochenende ist.) - Der Ausdruck
not A
ist wahr, wennA
falsch ist, und falsch, wennA
wahr ist. (Zum Beispiel bist du hungrig, wenn dunicht
Mittagessen hattest.)
Hier ist ein Programm, das automatisch alle Möglichkeiten darstellt. Genau wie die 'Multiplikationstabellen', an die du dich noch aus der Grundschulzeit erinnerst, nennt man dies eine Wahrheitstabelle.
Als ein Beispiel der Verwendung von and
ist hier ein Programm, das Zahlen zu Buchstaben umwandelt, mit einer Fehlerüberprüfung.
A or B
?not (A or B)
nur dann wahr ist, wenn sowohl A
und B
falsch sind. Also, beachten wir, dass (not A) and (not B)
nur dann wahr ist, wenn sowohl not A
als auch not B
wahr sind, d.h. wenn sowohl A
als auch B
falsch sind. Dies ergibt die folgenden Gleichungen:
(not A) and (not B) = not (A or B)Wenn wir ein
not
an beide Seiten anlegen, schließen wir
not ((not A) and (not B)) = not (not (A or B))und beobachten, dass
not(not X))
immer gleich X
ist, sodass
not ((not A) and (not B)) = not (not (A or B)) = A or BDiese Art und Weise, einen Booleschen Ausdruck umzuschreiben ist eins der De Morganschen Gesetze.
Operatorrangfolge
Boolesche Operatoren haben genauso eine Operatorrangfolge wie mathematische Operatoren. Diese Reihenfolge ist
NAO: not (höchste Rangordnung), and, or (niedrigste Rangordnung)
so bedeutet zum Beispiel
not x or y and z
folgendes: (not x) or (y and z)
Wir schließen diese Lektion mit einer kurzen Frage ab, für die wir diese Fakten verwenden.
A or not B and Cwenn (A, B, C) = (False, True, True)? Tipp
A or ((not B) and C)wenn wir die Werte austauschen, haben wir
False or ((not True) and True)und wenn wir jetzt auch noch Schritt für Schritt vereinfachen, haben wir am Ende
False or ((not True) and True) = False or (False and True) = False or False = False