single
Operatorpræcedens i Python
Stryg for at vise menuen
Når du udvikler en Python-applikation, er det vigtigt at forstå, hvordan Python håndterer operatorpræcedens, som bestemmer rækkefølgen, hvori operationer udføres i udtryk. Dette sikrer, at betingelser evalueres korrekt. Brug af parenteser kan også hjælpe med at tydeliggøre og styre rækkefølgen af operationer.
Logisk operatorpræcedens
Blandt logiske operatorer følger Python denne præcedens:
Eksempel: Fitness Tracker-mål
Lad os tydeliggøre med eksempler i konteksten af en 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)
Første resultat:
- Python evaluerer først
and: (calories_burned >= calorie_goal and Falsesvarer til FalseandFalse) bliverFalse; - Derefter anvendes
or:steps_taken >= step_goal or FalsebliverFalse or False, hvilket resulterer iFalse.
Andet resultat:
- Parenteser tvinger Python til at evaluere
steps_taken >= step_goal or calories_burned >= calorie_goalførst. Da bådesteps_taken >= step_goalogcalories_burned >= calorie_goalerFalse, bliver resultatet af parentesenFalse; - Derefter evalueres
False and False, hvilket resulterer iFalse.
Tredje resultat:
nothar den højeste præcedens, sånot (steps_taken >= step_goal)evalueres først. Dasteps_taken >= step_goalerFalse, blivernot FalsetilTrue;- Dernæst evalueres
calories_burned >= calorie_goal, hvilket erFalse; - Til sidst giver
True or FalseresultatetTrue.
Ligesom logiske operatorer følger andre operatorer såsom sammenligningsoperatorer (>=, <=, ==, osv.) og matematiske operatorer (+, -, *, /, osv.) også en specifik rækkefølge af præcedens.
For eksempel:
- Matematiske operatorer som
*og/har højere præcedens end+og-; - Sammenligningsoperatorer (
<,>,==, osv.) evalueres efter matematiske operationer; - Logiske operatorer (
not,and,or) evalueres til sidst.
Brug af parenteser ( ) kan hjælpe med at tydeliggøre og styre rækkefølgen af evaluering i dine udtryk.
Swipe to start coding
I den nuværende Fitness Tracker-kode gør flere indlejrede if-udsagn logikken sværere at læse og vedligeholde. Din opgave er at omskrive koden ved at bruge et enkelt, kortfattet if-udsagn med logiske operatorer. Brug den logiske operator and til at kombinere flere betingelser.
Fitnessmål bør spores effektivt, og det samme gælder for din kode! Den nuværende implementering tjekker om:
- Brugeren ikke har nået deres skridtmål.
- Brugeren ikke har forbrændt nok kalorier.
- Brugeren ikke trænede om morgenen.
Omskriv koden for at forbedre læsbarheden, mens du bevarer den samme logik.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat