Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Operatorprioritet i Python | Bemästra Python If-satser
Kontrollflöde i Python
Avsnitt 1. Kapitel 5
single

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)
Kodbeskrivning
expand arrow

Första resultatet:

  • Python utvärderar and först: (calories_burned >= calorie_goal and False samma som False and False) blir False;
  • Sedan tillämpas or: steps_taken >= step_goal or False blir False or False, vilket ger False.

Andra resultatet:

  • Parenteser tvingar Python att utvärdera steps_taken >= step_goal or calories_burned >= calorie_goal först. Eftersom både steps_taken >= step_goal och calories_burned >= calorie_goal är False, blir resultatet av parentesen False;
  • Sedan utvärderas False and False, vilket ger False.

Tredje resultatet:

  • not har högst prioritet, så not (steps_taken >= step_goal) utvärderas först. Eftersom steps_taken >= step_goal är False, blir not False till True;
  • Därefter utvärderas calories_burned >= calorie_goal, vilket är False;
  • Slutligen ger True or False resultatet True.
Note
Notering

Precis som logiska operatorer följer även andra operatorer såsom jämförelseoperatorer (>=, <=, ==, etc.) och matematiska operatorer (+, -, *, /, etc.) en specifik prioritetsordning.

Exempel:

  1. Matematiska operatorer som * och / har högre prioritet än + och -;
  2. Jämförelseoperatorer (<, >, ==, etc.) utvärderas efter matematiska operationer;
  3. 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.

Uppgift

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:

  1. Användaren inte har uppnått sitt stegmål.
  2. Användaren inte har förbränt tillräckligt med kalorier.
  3. 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

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 5
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt