Logik Python?
Hallo, folgende Frage:
def eine_funktion(a, b):
return not ((a and b) or (not a and not b))
Meine ersten Gedanken waren:
not (A and B) wäre ja: not A or not B. Also wäre diese Teilaussage ja nur falsch, wenn beide Aussagen wahr wären
not A and not B wäre ja nur Wahr, wenn beide Aussagen falsch wären.
Dann wurde mir aber klar, dass das not beide Aussagen negiert.
Nun 2 Fragen:
Ist meine Annahme richtig, dass das not vor der Klammer folgende Aussage konstruiert:
(not A or not B) and (A or B)? Dies wäre ja XOR
Und wäre das in der Mathematik genauso? Also würde eine Negation beider genannten Teilaussagen (not A or not B) and (A or B)? entstehen lassen, oder wäre dies nur in Python der Fall? Ich denke mal nicht, aber ich möchte mir sicher sein
Danke im Voraus!
1 Antwort
Das ist keine Frage von Python sondern letztlich der Boolschen Algebra.
not ((a and b) or (not a and not b)) # DeMorgan (außen)
!(a and b) AMD !(not a and not b) # DeMorgan auf Teilterme
(!a or !b) AMD (!!a or !!b) # [Involution/Doppelneg.]
(!a or !b) AND (a or b)
Und ja, der letzte Term wäre ein XOR, könnte man in Python auch so schreiben:
bool(a) ^ bool(b) # sofern a und b nicht ohnehin boolean sind
a != b #ginge für booleans natürlich auch.