Reihenfolge von Verknüpfungen von Bedingungen in Python?
Hallo,
Wenn man beispielsweise die folgende Bedingung hat:
if v_1 == 1 and v2 == 2 or v3 == 3:
Wie wird das dann geprüft bzw. was ist die Regel? Erst das and oder das or?
Vielen Dank im Voraus
3 Antworten
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
And hat in Python die höhere Präzedenz.
Das heißt, es wird wie folgt ausgewertet:
if (v1==1 and v2==2) or v3==3
Wenn v_1 == 1 und v2 == 2 beide wahr sind, dann wird die gesamte Bedingung wahr, unabhängig von v3.
Wenn entweder v_1 != 1 oder v2 != 2, dann hängt das Ergebnis der gesamten Bedingung von v3 == 3 ab.
Ich hoffe, dass das halbwegs verständlich erklärt ist.
![](https://images.gutefrage.net/media/user/CarinaSchoppe/1656762387545_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1656762388000)
Geprüft wird alles gleichzeitig die Frage ist was stärker bindet. In diesem Fall das and und danach das or.
And ist wie Punktrechnung und or wie Strichrechnung
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
Wie wird das dann geprüft bzw. was ist die Regel? Erst das and oder das or?
and wird vor or ausgewertet.
https://docs.python.org/3/reference/expressions.html#operator-precedence
willst du dieses Verhalten beeinflussen, kannst du Klammern nutzen:
a and b or c
# Wahr, wenn a und b wahr ist oder c wahr ist
a and (b or c)
# wahr, wenn a wahr ist und b oder c wahr sind