Kleines Logik-Raetsel

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
Splinter479
User
Beiträge: 5
Registriert: Freitag 20. Juli 2012, 12:43

Hallo,

ich habe einen sehr grossen logischen Ausdruck in deiner if-Abfrage und ich bin Fan davon, diese zusammenzustauchen, um den Code immer etwas "kurz und knapp" zu halten. Leider scheint Python an irgendeiner Stelle die Umformung nicht zu befolgen. Brauche hier evtl. jemanden mit etwas Erfahrung von Bool'scher Logik in Python.
Meine Ueberpruefung lautet:

Code: Alles auswählen

((x >= s) and (x <= e)) and ((y >= s) and (y <= e)),   und dazu die Umformung:
(x >= s) and (y >= s) and (x <= e) and (y <= e)         ===
((x and y) >= s) and ((x and y) <= e)                   ===
(s <= (x and y)) and ((x and y) <= e)                   ===
s <= (x and y) <= e
Setze ich erste und fuenfte Zeile jeweils in if-clausel, erhalte ich im folgenden nicht die gleiche Menge.
Behandelt Python an irgendeiner Stelle die Logik-Gatter anders als naiv i.d. Theorie oder habe ich irgendwo einen Fehler, den ich uebersehe?

Vielen Dank!
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@Splinter479: wenn Du schon mit Logik anfängst, dann solltest Du doch sagen können, was der Ausdruck "x and y" bedeutet.
Splinter479
User
Beiträge: 5
Registriert: Freitag 20. Juli 2012, 12:43

ach, ich glaube ich habe einen Denkfehler gefunden.
Wenn ich wuesste wie, wuerde ich den Thread wieder loeschen. Nevermind.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Code: Alles auswählen

(s <= (x and y) <= e) != all(s <= p <= x for p in [x, y])
8)
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Antworten