Boolesche Werte und Variablen
Die Wahrheitswerte wahr
oder falsch
bzw. auf Englisch und in Python True
oder False
werden auch als Boolesche Werte (nach George Boole) bezeichnet.
Boolesche Werte kann man mit den logischen Verknüpfungen and
, or
, not
kombinieren: Die Verknüpfungen sind durch die folgenden Tabellen definiert (genau wie in der mathematischen Logik; beachte: True or True = True).
Achtung: Die Tabellen sind nur bei ausreichender Fensterbreite vernünftig lesbar.
Logisches und
/and
(Konjunktion):
and | True | False |
---|---|---|
True | True | False |
False | False | False |
Logisches oder
/or
(Disjunktion):
or | True | False |
---|---|---|
True | True | True |
False | True | False |
Logisches nicht
/not
(Negation, Verneinung):
x | True | False |
---|---|---|
not x | False | True |
Eine Variable, die als Wert True
oder False
hat, wird als Boolesche Variable bezeichnet (englisch boolean).
Vergleiche liefern Boolesche Werte:
==
: gleich für Gleichheit; beispielsweise hat2==5
den WertFalse
Achtung: Das einzelne Zeichen
=
ist beim Programmieren ein Zuweisungszeichen und kein Gleichheitszeichen wie in der Mathematik!!=
: ungleich für Ungleichheit;a != b
undnot (a == b)
haben dieselbe Bedeutung<
,<=
,>
,>=
: kleiner, kleiner-gleich, grösser, grösser-gleich
Welche Ausgaben erwartest du bei dem folgenden Programm? Erst denken, dann testen!
print(True and False) print(2 < 5) print((235236235 < 2346346) or True) a = (5 != 6) # a ist eine Boolesche Variable # Es ist erlaubt, hier die Klammern wegzulassen, denn das Vergleichszeichen != bindet staerker als das Zuweisungszeichen =. # Klammern verbessern aber oft die Lesbarkeit und dienen der Fehlervermeidung. # (Nur als Vielprogrammierer wird man sich genau merken können, was staerker bindet.) print(a) b = not (False or (True and (2 < 5))) print(b) # Man kann auch Wahrheitswerte vergleichen print(True != True) print(True == (False or True)) print((2 < 3) == (-1 <= 0)) # Die Leerzeichen sind hier stets optional, dienen aber der besseren Lesbarkeit: # print((2<3)==(-1<=0)) # hat dieselbe Bedeutung.
Zur Information: Intern wird True
als 1
und False
als 0
gespeichert, weswegen Ausdrücke wie print(True == 1)
oder print(True > 42)
fehlerfrei ausgeführt werden. Guter Programmierstil ist das aber nicht.