Problem mit Operator (XOR und Mac)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Yuya
User
Beiträge: 7
Registriert: Mittwoch 30. November 2022, 18:35

Hallo Leute!

ich hoffe, ich bin hier in der richtigen Kategorie mit meinem Anliegen.

Hintergrund ist folgender:
- Ich lerne gerade mit einem Python-Selbstlernbuch und meinem Mac, Schritt für Schritt die Basics zum Programmieren.
Momentan befinde ich mich bei den Operatoren (and,or,not, XOR) und habe speziell beim Gebrauch des Exklusive-Order Befehls, arge Probleme zu den Lösungen
zu gelangen, die mir im Buch dargestellt werden. Da das Buch die Schritte mit Windows-Betriebssystem erklärt, vermute ich dass sich der Operator und das damit verbundene Zeichen (^) einfach anders beim Mac verhält.

1 Aufgabe: "a" == "a" ^ 3 >2 ----------- ergibt sogar eine Fehlermeldung:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
"a" == "a" ^ 3 >2
TypeError: unsupported operand type(s) for ^: 'str' and 'int'
*Im Netz stand, dass ich den string für eine Subtraktion erst einmal in einen integer verwandeln müsse, jedoch möchte ich die Werte ja lediglich für eine Bool-Aussage miteinander vergleichen ? *Das Buch kommt zur Lösung: False

2. Aufgabe:
2 > 3 ^ 3==3
False ------ im Buch steht jedoch "True" - da die zweite Aussage ja korrekt ist und das "Entweder-oder"-Prinzip ja auch eigentlich greift.

3. Aufgabe:
True ^1<0
False ----- auch hier wieder das gleiche Prinzip. Lösungen im Buch zeigen "True" an, was ich logisch betrachte auch nachvollziehen kann. Mein Ergebnis zeigt jedoch, das Gegenteil an.


Ich hoffe, ich finde hier jemanden, der sich mit dem Befehl und der Umsetzung am Mac auskennt :(

Liebe Grüße
Yuya
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Dass man den String "a" nicht mit Bitoperationen verknüpfen kann, sollte klar sein.
Bei 2 > 3^3 == 3 muss man die Ausführungsreihenfolge beachten, also als erstes 3^3 ergibt 0, und dann 2 > 0 and 0 == 3 wobei der erste Teilausdruck wahr, der zweite aber falsch ist, was insgesamt False ergibt. Python hat also recht, das Buch unrecht, wobei es im Buch vielleicht auch anders steht, als Du es hier beschrieben hast.
Mit Mac und Windows hat das nichts zu tun, Logik ist überall gleich.

In Python gibt es keinen logischen XOR-Operator, ^ ist das bisweilen XOR. (2>3) ^ (3==3) würde die Bitoperation 0 ^ 1 bedeuten.
Antworten