single
Operatorrangfolge in Python
Swipe um das Menü anzuzeigen
Beim Entwickeln einer Python-Anwendung ist es wichtig zu verstehen, wie Python die Operatorrangfolge behandelt, da diese bestimmt, in welcher Reihenfolge Operationen in Ausdrücken ausgeführt werden. Dies stellt sicher, dass Bedingungen korrekt ausgewertet werden. Die Verwendung von Klammern kann ebenfalls dazu beitragen, die Reihenfolge der Operationen zu verdeutlichen und zu steuern.
Vorrang der logischen Operatoren
Unter den logischen Operatoren folgt Python dieser Rangfolge:
Beispiel: Ziele eines Fitness-Trackers
Zur Verdeutlichung einige Beispiele im Kontext eines Fitness-Trackers:
12345678910111213141516171819# Example 1: AND has higher precedence than OR steps_taken = 8000 step_goal = 10000 calories_burned = 450 calorie_goal = 500 first_result = steps_taken >= step_goal or calories_burned >= calorie_goal and False # Same as: steps_taken >= step_goal or (calories_burned >= calorie_goal and False) # Example 2: Parentheses change the precedence second_result = (steps_taken >= step_goal or calories_burned >= calorie_goal) and True # Example 3: NOT has the highest precedence third_result = not (steps_taken >= step_goal) or calories_burned >= calorie_goal # Same as: (not (steps_taken >= step_goal)) or (calories_burned >= calorie_goal) print('The first expression is:', first_result) print('The second expression is:', second_result) print('The third expression is:', third_result)
Erstes Ergebnis:
- Python wertet zuerst
andaus: (calories_burned >= calorie_goal and False, also FalseandFalse) ergibtFalse; - Danach wird
orangewendet:steps_taken >= step_goal or FalseergibtFalse or False, was zuFalseführt.
Zweites Ergebnis:
- Klammern erzwingen, dass Python zuerst
steps_taken >= step_goal or calories_burned >= calorie_goalauswertet. Da sowohlsteps_taken >= step_goalals auchcalories_burned >= calorie_goalFalsesind, ist das Ergebnis der KlammerFalse; - Danach wird
False and Falseausgewertet, was zuFalseführt.
Drittes Ergebnis:
nothat die höchste Priorität, daher wirdnot (steps_taken >= step_goal)zuerst ausgewertet. Dasteps_taken >= step_goalFalseist, wirdnot FalsezuTrue;- Als Nächstes wird
calories_burned >= calorie_goalausgewertet, wasFalseist; - Schließlich ergibt
True or Falsedas ErgebnisTrue.
Genau wie logische Operatoren folgen auch andere Operatoren wie Vergleichsoperatoren (>=, <=, ==, usw.) und mathematische Operatoren (+, -, *, /, usw.) einer bestimmten Reihenfolge der Auswertung.
Zum Beispiel:
- Mathematische Operatoren wie
*und/haben eine höhere Priorität als+und-; - Vergleichsoperatoren (
<,>,==, usw.) werden nach den mathematischen Operationen ausgewertet; - Logische Operatoren (
not,and,or) werden zuletzt ausgewertet.
Die Verwendung von Klammern ( ) kann helfen, die Reihenfolge der Auswertung in Ausdrücken zu verdeutlichen und zu steuern.
Wischen, um mit dem Codieren zu beginnen
Im aktuellen Fitness-Tracker-Code erschweren mehrere verschachtelte if-Anweisungen die Lesbarkeit und Wartbarkeit der Logik. Ihre Aufgabe ist es, den Code mithilfe einer einzigen, prägnanten if-Anweisung mit logischen Operatoren umzuschreiben. Verwenden Sie den logischen Operator and, um mehrere Bedingungen zu kombinieren.
Fitnessziele sollten effizient verfolgt werden – ebenso Ihr Code! Die aktuelle Implementierung prüft, ob:
- Der Benutzer sein Schrittziel nicht erreicht hat.
- Der Benutzer nicht genügend Kalorien verbrannt hat.
- Der Benutzer morgens nicht trainiert hat.
Schreiben Sie den Code um, um die Lesbarkeit zu verbessern und die Logik beizubehalten.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen