single
Operatorprioriteit in Python
Veeg om het menu te tonen
Bij het ontwikkelen van een Python-toepassing is het belangrijk om te begrijpen hoe Python omgaat met operatorprioriteit, wat bepaalt in welke volgorde bewerkingen in expressies worden uitgevoerd. Dit zorgt ervoor dat voorwaarden correct worden geëvalueerd. Het gebruik van haakjes kan ook helpen om de volgorde van bewerkingen te verduidelijken en te beheersen.
Prioriteit van logische operatoren
Onder logische operatoren hanteert Python de volgende prioriteit:
Voorbeeld: Doelen van een fitness tracker
Laten we dit verduidelijken met voorbeelden in de context van een fitness tracker:
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)
Eerste resultaat:
- Python evalueert eerst
and: (calories_burned >= calorie_goal and False, hetzelfde als FalseandFalse) wordtFalse; - Daarna wordt
ortoegepast:steps_taken >= step_goal or FalsewordtFalse or False, wat resulteert inFalse.
Tweede resultaat:
- Haakjes zorgen ervoor dat Python eerst
steps_taken >= step_goal or calories_burned >= calorie_goalevalueert. Omdat zowelsteps_taken >= step_goalalscalories_burned >= calorie_goalFalsezijn, is het resultaat van de haakjesFalse; - Vervolgens wordt
False and Falsegeëvalueerd, wat resulteert inFalse.
Derde resultaat:
notheeft de hoogste prioriteit, dusnot (steps_taken >= step_goal)wordt als eerste geëvalueerd. Omdatsteps_taken >= step_goalFalseis, wordtnot FalseTrue;- Vervolgens wordt
calories_burned >= calorie_goalgeëvalueerd, watFalseis; - Tot slot resulteert
True or FalseinTrue.
Net als logische operatoren volgen andere operatoren zoals vergelijkingsoperatoren (>=, <=, ==, enz.) en wiskundige operatoren (+, -, *, /, enz.) ook een specifieke volgorde van prioriteit.
Bijvoorbeeld:
- Wiskundige operatoren zoals
*en/hebben een hogere prioriteit dan+en-; - Vergelijkingsoperatoren (
<,>,==, enz.) worden geëvalueerd na wiskundige bewerkingen; - Logische operatoren (
not,and,or) worden als laatste geëvalueerd.
Het gebruik van haakjes ( ) kan helpen om de volgorde van evaluatie in je expressies te verduidelijken en te sturen.
Veeg om te beginnen met coderen
In de huidige Fitness Tracker-code maken meerdere geneste if-statements de logica moeilijker leesbaar en onderhoudbaar. De opdracht is om de code te herschrijven met één enkele, beknopte if-statement met logische operatoren. Gebruik de logische operator and om meerdere voorwaarden te combineren.
Fitnessdoelen moeten efficiënt worden bijgehouden, en dat geldt ook voor je code! De huidige implementatie controleert of:
- De gebruiker zijn stappendoel niet heeft gehaald.
- De gebruiker niet genoeg calorieën heeft verbrand.
- De gebruiker niet in de ochtend heeft gesport.
Herschrijf de code om de leesbaarheid te verbeteren, terwijl de logica hetzelfde blijft.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.