Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Operatorpræcedens i Python | Beherskelse af Python If-sætninger
Kontrolflow i Python
Sektion 1. Kapitel 5
single

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

Første resultat:

  • Python evaluerer først and: (calories_burned >= calorie_goal and False svarer til False and False) bliver False;
  • Derefter anvendes or: steps_taken >= step_goal or False bliver False or False, hvilket resulterer i False.

Andet resultat:

  • Parenteser tvinger Python til at evaluere steps_taken >= step_goal or calories_burned >= calorie_goal først. Da både steps_taken >= step_goal og calories_burned >= calorie_goal er False, bliver resultatet af parentesen False;
  • Derefter evalueres False and False, hvilket resulterer i False.

Tredje resultat:

  • not har den højeste præcedens, så not (steps_taken >= step_goal) evalueres først. Da steps_taken >= step_goal er False, bliver not False til True;
  • Dernæst evalueres calories_burned >= calorie_goal, hvilket er False;
  • Til sidst giver True or False resultatet True.
Note
Bemærk

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:

  1. Matematiske operatorer som * og / har højere præcedens end + og -;
  2. Sammenligningsoperatorer (<, >, ==, osv.) evalueres efter matematiske operationer;
  3. 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.

Opgave

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:

  1. Brugeren ikke har nået deres skridtmål.
  2. Brugeren ikke har forbrændt nok kalorier.
  3. Brugeren ikke trænede om morgenen.

Omskriv koden for at forbedre læsbarheden, mens du bevarer den samme logik.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt