Hallo liebe Programmierfreunde,
ich bin seit letztem Jahr September Azubi und programmiere mit Python.
Nun bin ich aus Zufall auf folgendes Problem gestoßen:
1.) True == False -> False
2.) True == True -> True
3.) False == False -> False
soweit so gut aber nun folgendes:
4.) True == False == False -> False laut Python
5.) (True == False) == False -> True
Nun stellt sich mir die Frage... wieso Python da nicht True herausbekommt.
Ich habe bereits in der Python Doku nachgeschaut und nachgelesen ob es etwas mit der Leserichtung der Ausdrücken in Python zu tun haben könnte. Gelesen wird von Links nach Rechts.
Weiß jemand, wieso bei dem Beispiel Nr. 4 False rauskommt?
Vielen Dank fürs Helfen
Grüßle Python93
Boolsche Unklarheiten
Vergleichsoperatorverkettung funktioniert in Python so: ``a op b op c`` ist äquivalent zu ``a op b and b op c``. Damit beispielsweise ``0 <= n <= 12`` das bedeutet wonach es aussieht.
@ deets
danke, ja stimmt. War wahrscheinlich etwas konfus von den ganzen True's und False's
@ BlackJack
ahh Ok, habs verstanden! Vielen Dank!! und auch an snafu für die Veranschaulichung!
Schönen Tag noch.
danke, ja stimmt. War wahrscheinlich etwas konfus von den ganzen True's und False's
@ BlackJack
ahh Ok, habs verstanden! Vielen Dank!! und auch an snafu für die Veranschaulichung!
Schönen Tag noch.
Ich benutze:
- Python 2.7
- Windows XP
- Python 2.7
- Windows XP
Okay, ja ich habe jetzt paar Möglichkeiten ausprobiert. Die Vorgehensweise wie er es macht ist jetzt klar.
Aber warum macht Python das so? Warum erkennt Python das als müsse er den 'Term' trennen und and einfügen?
Wenn mir das noch jemand erklären kann, bin ich wunschlos glücklich!
Aber warum macht Python das so? Warum erkennt Python das als müsse er den 'Term' trennen und and einfügen?
Wenn mir das noch jemand erklären kann, bin ich wunschlos glücklich!
Ich benutze:
- Python 2.7
- Windows XP
- Python 2.7
- Windows XP
BlackJack hat geschrieben:Vergleichsoperatorverkettung funktioniert in Python so: ``a op b op c`` ist äquivalent zu ``a op b and b op c``. Damit beispielsweise ``0 <= n <= 12`` das bedeutet wonach es aussieht.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
@Python93: Das beispielhaft genannte `0 <= n <= 12` soll halt zu `0 <= n and n <= 12` werden. Für andere Dinge braucht man solche "Dreier-Vergleiche" in der Praxis eigentlich auch nicht. Daher ist das so gesehen ein gewünschtes Verhalten. Nochmal der Vergleich:
vs.
Bedeutet alles: "Wenn n zwischen 0 und 12 liegt, dann...", nur das erste ist lesbarer.
Code: Alles auswählen
if 0 <= n <= 12:
[...]
Code: Alles auswählen
if n >= 0 and n <= 12:
[...]
Also ist das der einzige Grund..? Okay, danke dir nochmal.
Ich hab mich halt nur gewundert, dass die vereinfachte Darstellung der einzige Grund ist.
Ihr werdet sicher noch ein wenig von mir hören xD bin ja noch am Anfang meiner Ausbildung.
Liebe Grüße, Python93
Ich hab mich halt nur gewundert, dass die vereinfachte Darstellung der einzige Grund ist.
Ihr werdet sicher noch ein wenig von mir hören xD bin ja noch am Anfang meiner Ausbildung.
Liebe Grüße, Python93
Code: Alles auswählen
print "Chiaoo"
Ich benutze:
- Python 2.7
- Windows XP
- Python 2.7
- Windows XP
Naja, mir reicht das.
Python erlaubt implizite transitive Vergleiche und das finde ich, ist schon eine feine Sache.
Python erlaubt implizite transitive Vergleiche und das finde ich, ist schon eine feine Sache.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]