Das folgende kleine Quiz-Programm in Python ist vermutlich einfach zu verstehen. Du kannst es gerne herunterladen und ausführen.
antwort = input("Wie heisst das kulturelle und wirtschaftliche Zentrum der Ostschweiz? ") if (antwort == "St. Gallen") or (antwort == "St.Gallen") or (antwort == "Saint-Gall") or (antwort == "San Gallo"): print("Korrekt!") else: print("Vermutlich falsch.") print("Die als richtig akzeptierten Antworten wären 'St. Gallen', 'St.Gallen', 'Saint-Gall' oder 'San Gallo' gewesen.")
Damit du dieses Programm richtig verstehst und in Zukunft ähnliche Programme problemlos schreiben kannst, werden im Rest dieser Webseite und auf der nachfolgenden Seite zu “if-else-statements” einige Sachverhalte erläutert:
==
im obigen Programm)or
im obigen Programm)
Zur Einstimmung auf die folgenden eher theoretischen Erklärungen gib in der Python-Shell die folgenden Befehle (oder zumindest einige davon) ein (jeweils gefolgt von Enter
).
Versuche, die Antworten des Computers vorherzusagen bzw. zu verstehen!
(Die Worte in den Überschriften dienen der Orientierung und werden unten erklärt. Die Python-Shell antwortet immer, wenn deine Anfrage eine “sinnvolle” Antwort hat.)
2 == 5
2 = 5
2 > 2
2 >= 2
not (2 == 5)
oder gleichbedeutend 2 != 5
“Hallo” == “HALLO”
(selber tippen, kopieren kann fehlschlagen)“Hallo” != “HALLO”
“2+5” == 2+5
False == True
type(3)
type(2.5)
type(“3+5”)
type(False)
a = (2==5)
a
type(a)
antwort = “Sanggalle”
antwort
antwort == “St. Gallen”
Logisches Und:
False and True
True and True
a and True
Logisches Oder:
False or False
True or False
True or True
a or True
Verneinung = Negation:
not True
not a
Eine Aussage kann entweder wahr
oder falsch
sein, also einen dieser beiden sogenannten Wahrheitswerte haben. Statt Wahrheitswert sagt man auch boolescher Werte (nach George Boole).
Auf Englisch und in Python heissen die beiden Wahrheitswerte True
und False
(beachte die Grossschreibung).
Der zugehörige Datentyp in Python heisst
bool
für boolescher Datentyp; Daten vom Typ bool
haben entweder den Wert True
oder den Wert False
.
Du hast dies in der Python-Shell bereits durch die Eingabe der Befehle type(True)
bzw. type(False)
gesehen.
Variablen vom Datentyp bool
werden als boolesche Variablen oder Booleans bezeichnet.
In der obigen Aufgabe war a
eine boolesche Variable.
Boolesche Werte kann man mit den logischen Verknüpfungen and
, or
und not
kombinieren (statt logischer Verknüpfung sagt man auch boolescher Operator).
Diese Verknüpfungen sind durch die folgenden Tabellen definiert (wie du bereits in der obigen Aufgabe herausgefunden hast).
Definition von and
(logisches Und, Konjunktion)
Die letzte Spalte der folgenden Tabelle gibt den Wert des logischen Und in Abhängigkeit von allen möglichen Belegungen der Variablen $a$ und $b$ an.
Die vorletzte Zeile besagt beispielsweise, dass True and False
als False
definiert ist.
$a$ | $b$ | $a$ and b |
False | False | False |
False | True | False |
True | False | False |
True | True | True |
Merke: Logisches Und and
wird genau dann wahr, wenn beide Argumente wahr sind.
Definition von or
(logisches Oder, Disjunktion)
$a$ | $b$ | $a$ or b |
False | False | False |
False | True | True |
True | False | True |
True | True | True |
Merke: Logisches Oder or
wird genau dann wahr, wenn mindestens eines der beiden Argumente wahr ist.
Definition von not
(logische Verneinung, Negation)
$a$ | not $a$ |
False | True |
True | False |
Wenn noch nicht intuitiv klar: Lerne die obigen Tabellen für and
, or
und not
auswendig!
Sage das Ergebnis der folgenden booleschen Ausdrücke voraus. Teste dann jeweils in der Python-Shell, ob deine Vermutung korrekt war!
not(True) and False
not(True) or False
(True or False) and True
(True and True) or (False and True)
not(True or True)
Wenn du zu viele Fehler gemacht hast: Erfinde eigene ähnliche Ausdrücke und teste dich selbst.
Die logischen Verknüpfungen and
, or
und not
sind an den normalen Sprachgebrauch angelehnt:1)
Im normalen Sprachgebrauch suggeriert “oder” bisweilen ein “entweder … oder …” (exklusives Oder). Beispiel: “Ich gehe heute abend ins Kino oder ins Theater.”
Im Sinne des oben definierten logischen Oders or
ist diese Aussage auch dann wahr, wenn ich sowohl ins Kino als auch ins Theater gehe (denn True or True
hat den Wert True
).
Vergleiche liefern Boolesche Werte:
==
: gleich $=$ für Gleichheit; beispielsweise hat 2 == 5
den Wert False
!=
: ungleich $\not=$ für Ungleichheit; a != b
und not (a == b)
haben dieselbe Bedeutung. <
: kleiner $<$<=
: kleiner-gleich $\leq$>
: grösser $>$>=
: grösser-gleich $\geq$
Die Zeichen !=
und <=
und >=
sollen an die in der Mathematik gebräuchlichen Zeichen $\not=$ und $\leq$ und $\geq$ erinnern.
Achtung: Das einzelne Zeichen =
ist beim Programmieren ein Zuweisungszeichen und kein Gleichheitszeichen wie in der Mathematik! Links davon muss immer eine Variable stehen.
(Da die Informatiker das mathematische Gleichheitszeichen zweckentfremdet haben, müssen sie zur Strafe nun immer zwei Gleichheitszeichen eingeben, wenn sie auf Gleichheit testen wollen.)
Teste in der Python-Shell:
-2.3 < -3.2
;==
und Ungleichheitszeichen !=
zum Vergleich von Strings;==
und Ungleichheitszeichen !=
zum Vergleich von Booleans (= Wahrheitswerten).
Du darfst natürlich auch beliebige Strings oder Booleans mit den “anderen vier” Vergleichszeichen vergleichen, jedoch werden dich manche Ergebnisse vermutlich überraschen, etwa das von “Z”<“a”
oder das von False < True
.