single
Operatorprioritet i Python
Svep för att visa menyn
Vid utveckling av en Python-applikation är det viktigt att förstå hur Python hanterar operatorers prioritet, vilket avgör i vilken ordning operationer utförs i uttryck. Detta säkerställer att villkor utvärderas korrekt. Att använda parenteser kan också hjälpa till att förtydliga och styra ordningen för operationerna.
Prioritet för logiska operatorer
Bland logiska operatorer följer Python denna prioritet:
Exempel: Mål i träningsspårare
Vi förtydligar med exempel i kontexten av en träningsspårare:
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)
Första resultatet:
- Python utvärderar
andförst: (calories_burned >= calorie_goal and Falsesamma som FalseandFalse) blirFalse; - Sedan tillämpas
or:steps_taken >= step_goal or FalseblirFalse or False, vilket gerFalse.
Andra resultatet:
- Parenteser tvingar Python att utvärdera
steps_taken >= step_goal or calories_burned >= calorie_goalförst. Eftersom bådesteps_taken >= step_goalochcalories_burned >= calorie_goalärFalse, blir resultatet av parentesenFalse; - Sedan utvärderas
False and False, vilket gerFalse.
Tredje resultatet:
nothar högst prioritet, sånot (steps_taken >= step_goal)utvärderas först. Eftersomsteps_taken >= step_goalärFalse, blirnot FalsetillTrue;- Därefter utvärderas
calories_burned >= calorie_goal, vilket ärFalse; - Slutligen ger
True or FalseresultatetTrue.
Precis som logiska operatorer följer även andra operatorer såsom jämförelseoperatorer (>=, <=, ==, etc.) och matematiska operatorer (+, -, *, /, etc.) en specifik prioritetsordning.
Exempel:
- Matematiska operatorer som
*och/har högre prioritet än+och-; - Jämförelseoperatorer (
<,>,==, etc.) utvärderas efter matematiska operationer; - Logiska operatorer (
not,and,or) utvärderas sist.
Att använda parenteser ( ) kan hjälpa till att tydliggöra och styra utvärderingsordningen i dina uttryck.
Svep för att börja koda
I den nuvarande Fitness Tracker-koden gör flera nästlade if-satser logiken svårare att läsa och underhålla. Din uppgift är att skriva om koden med en enda, koncis if-sats med logiska operatorer. Använd den logiska operatorn and för att kombinera flera villkor.
Träningsmål bör följas upp effektivt, och detsamma gäller din kod! Den nuvarande implementationen kontrollerar om:
- Användaren inte har uppnått sitt stegmål.
- Användaren inte har förbränt tillräckligt med kalorier.
- Användaren inte tränade på morgonen.
Skriv om koden för att förbättra läsbarheten samtidigt som du behåller samma logik.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal