Seite 1 von 1
wie erzeugt man eine XOR Abfrage?
Verfasst: Freitag 9. August 2024, 17:53
von Pitwheazle
In meinem Rechenduell muss etwas passieren, wenn entweder der eine oder der andere Duellant ein Aufsteiger ist, aber nicht beide. Das ist doch eine XOR Abfrage?
Ich habe es nur so hinbekommen:
Code: Alles auswählen
if (duellant_1.aufsteiger or duellant_2.aufsteiger) and not (duellant_1.aufsteiger and duellant_2.aufsteiger):
Re: wie erzeugt man eine XOR Abfrage?
Verfasst: Freitag 9. August 2024, 18:44
von pillmuncher
@Pitwheazle:
Was soll passieren, wenn keiner der beiden ein Aufsteiger ist?
Hier die Wahrheitstabelle für
xor:
Code: Alles auswählen
d1 | d2 | xor
-------------------
F | F | F
T | F | T
F | T | T
T | T | F
Wenn es sicher ist, dass du
xor verwenden möchtest und dass die
d.aufsteiger immer
bool sind, kannst du einfach das hier benutzen:
Re: wie erzeugt man eine XOR Abfrage?
Verfasst: Freitag 9. August 2024, 18:47
von nezzcarth
Sowas kann man sich gut mit Wahrheitstabellen verdeutlichen: Ja, es ist ein exklusives Oder (XOR).
XOR gibt es in python auch, jedoch nur als bitwise operator (^), daher finde ich es eher ungewöhnlich, den hier zu nehmen, auch wenn aus technischen Gründen in dem Fall das Richtige rauskommt:
Code: Alles auswählen
In [8]: for p, q in itertools.product((True, False), repeat=2):
...: print(f"{p} ^ {q}: {p^q}")
...:
True ^ True: False
True ^ False: True
False ^ True: True
False ^ False: False
In [9]: for p, q in itertools.product((True, False), repeat=2):
...: print(f"({p} or {q}) and not ({p} and {q}): {(p or q) and not (p and q)}")
...:
(True or True) and not (True and True): False
(True or False) and not (True and False): True
(False or True) and not (False and True): True
(False or False) and not (False and False): False
In [10]: for p, q in itertools.product((True, False), repeat=2):
...: print(f"{p} {q}:", ((p or q) and not (p and q)) == p ^ q)
...:
True True: True
True False: True
False True: True
False False: True
Ob es die richte Wahl für deinen Zweck ist, musst du aber einschätzen.
Re: wie erzeugt man eine XOR Abfrage?
Verfasst: Freitag 9. August 2024, 19:27
von Pitwheazle
pillmuncher hat geschrieben: Freitag 9. August 2024, 18:44
[/code]Wenn es sicher ist, dass du
xor verwenden möchtest und dass die
d.aufsteiger immer
bool sind, kannst du einfach das hier benutzen:
Stimmt, müsste eigentlich auch funktionieren - muss ich mal drüber hirnen (oder ausprobieren).
(Wenn keiner Aufsteiger ist oder beide passiert hier erstmal nix.)