Wie nicht-boolesche Werte mit „und“ und „oder“ in Python interagieren
Frage:
In Python wird es beobachtet dass die logischen Operatoren „und“ und „oder“ ungewöhnliches Verhalten zeigen, wenn sie mit nicht-booleschen Werten arbeiten. Beispielsweise gibt der Ausdruck „10 und 7-2“ 5 anstelle von „Wahr“ oder „Falsch“ zurück. Erklären Sie dieses Verhalten und seine Auswirkungen auf die Python-Programmierung.
Antwort:
Die logischen Operatoren „und“ und „oder“ von Python haben eindeutige Regeln für den Umgang mit nicht-booleschen Werten:
„und“ Verhalten:
- Wenn ein Wert im Ausdruck False ist, wird „False“ zurückgegeben.
- Wenn kein Wert False ist, wird der letzte Wert im Ausdruck zurückgegeben.
"oder" Verhalten:
- Wenn ein Wert im Ausdruck True ist, wird „True“ zurückgegeben.
- Wenn kein Wert True ist, wird der letzte Wert im Ausdruck zurückgegeben.
Betrachten Sie den Beispielausdruck „10 und 7-2":
- 7-2 ergibt 5 (einen nicht-booleschen Wert).
- Der Ausdruck enthält keine False-Werte, daher gibt „and“ den letzten zurück Wert, der 5 ist.
Ebenso gilt für „10 oder 7-2":
- 7-2 ergibt 5 (einen nicht-booleschen Wert).
- Der Ausdruck (10) enthält einen wahren Wert, also „oder“ gibt 10 zurück.
Legitimität und Fallstricke:
Dieses Verhalten ist legitim und häufig verwendet. Es kann jedoch zu unerwarteten Ergebnissen führen, wenn es nicht richtig verstanden wird. Zu den Fallstricken, auf die Sie achten sollten, gehören:
-
Implizite wahre/falsche Werte: Einige nicht-boolesche Werte, wie leere Zeichenfolgen, leere Listen und Keine, werden implizit als falsch behandelt , während Zahlen ungleich Null implizit wahr sind.
-
Operand Reihenfolge: Die Reihenfolge der Operanden ist bei „und“ und „oder“ wichtig. Im obigen Beispiel gibt „10 und 7-2“ 5 zurück, aber „7-2 und 10“ gibt 8 zurück (da der implizite False-Wert von 5 „und“ kurzschließt).
-
Typkonvertierung: „und“ und „oder“ versuchen, nicht-boolesche Operanden in boolesche Werte umzuwandeln. Dies kann in Fällen wie „0 und ‚0‘ == True“ zu unerwarteten Ergebnissen führen (da die Zeichenfolge „0“ implizit als False behandelt wird).
Das obige ist der detaillierte Inhalt vonWie gehen die „and'- und „or'-Operatoren von Python mit nicht-booleschen Werten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!