Hallo zusammen. Ich soll eine Warheitstabelle für den Ausdruck : "not a or b or c " erstellen. Ich kriege jetzt true , 0 und 1 als output raus. Ist true nicht auch 1? Wieso kommt da mal true und mal 1 raus? Hat das irgendein Sinn? Z.b bei
not0 or 0 or 0 kriege ich true raus und bei "not 1 or 0 or 1 kriege ich "1" als output.
true oder 1
Das liegt an der Implementierung von and und or. Die funktionieren ein bisschen anders, als man das denkt.
koenntest du hinschreiben als
Das heisst, dass statt einem Wahrheitswert einfach nur der Wert, der jeweils die Bedingung erfuellt hat, zurueck gegeben wird. Und daher kommt das bei dir. Kann man zB so einfachsehen:
Code: Alles auswählen
a or b
koenntest du hinschreiben als
Code: Alles auswählen
def logical_or(a, b):
if a: # implizite Bestimmung von bool(a)
return a
return b
Code: Alles auswählen
>>> "abc" or "d"
'abc'
Hallo StevenB99,
Hier ein Auszug aus der achon recht alten Pytonreferenz:
Also verwende für boolsche Operationen True und False.
Gruss Peter
Hier ein Auszug aus der achon recht alten Pytonreferenz:
Mit den Schlüsselwörtern and, or und not können boolesche Ausdrücke gebildet werden. Diese
Operatoren verhalten sich wie folgt:
x or y Ergibt x, falls x wahr ist, sonst y
x and y Ergibt x, falls x falsch ist, sonst y
not x Ergibt 1, falls x falsch ist, sonst 0
Bei Verwendung eines Ausdrucks zur Bestimmung eines Wahrheitswertes werden alle von Null
verschiedenen Zahlen und alle nicht-leeren Strings, Listen, Tupel oder Dictionaries als logisch wahr
betrachtet. Die Zahl Null, None sowie leere Listen, Tupel und Dictionaries werden logisch falsch
ausgewertet.
Die Auswertung eines booleschen Ausdrucks erfolgt von links nach rechts und verwendet den rechten
Operanden nur dann, wenn er zur Bestimmung des Ergebnisses notwendig ist. In a and b wird b
nur dann ausgewertet, falls a logisch wahr ist.
Code: Alles auswählen
>>> a = True
>>> b = 5
>>> a and b
5
>>> a or b
True
b = True
>>> a and b
True
>>>
>>> a = 7
>>> a or b
7
Gruss Peter