Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Operatorprioritet i Python | Mestre Python If-setninger
Kontrollflyt i Python
Seksjon 1. Kapittel 5
single

single

Operatorprioritet i Python

Sveip for å vise menyen

Når du utvikler en Python-applikasjon, er det viktig å forstå hvordan Python håndterer operatorpresedens, som bestemmer rekkefølgen operasjoner utføres i uttrykk. Dette sikrer at betingelser evalueres korrekt. Å bruke parenteser kan også bidra til å tydeliggjøre og kontrollere rekkefølgen på operasjonene.

Logisk operatorpresedens

Blant logiske operatorer følger Python denne presedensen:

Eksempel: Treningsmål i aktivitetsmåler

La oss tydeliggjøre med eksempler i konteksten av en aktivitetsmåler:

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 and først: (calories_burned >= calorie_goal and False, det samme som False and False) blir False;
  • Deretter brukes or: steps_taken >= step_goal or False blir False or False, som gir False.

Andre resultat:

  • Parenteser tvinger Python til å evaluere steps_taken >= step_goal or calories_burned >= calorie_goal først. Siden både steps_taken >= step_goal og calories_burned >= calorie_goal er False, blir resultatet av parentesen False;
  • Deretter evalueres False and False, som gir False.

Tredje resultat:

  • not har høyest presedens, så not (steps_taken >= step_goal) evalueres først. Siden steps_taken >= step_goal er False, blir not False til True;
  • Deretter evalueres calories_burned >= calorie_goal, som er False;
  • Til slutt gir True or False resultatet True.
Note
Merk

Akkurat som logiske operatorer, følger også andre operatorer som sammenligningsoperatorer (>=, <=, ==, osv.) og matematiske operatorer (+, -, *, /, osv.) en bestemt rekkefølge for presedens.

For eksempel:

  1. Matematiske operatorer som * og / har høyere presedens enn + og -;
  2. Sammenligningsoperatorer (<, >, ==, osv.) evalueres etter matematiske operasjoner;
  3. Logiske operatorer (not, and, or) evalueres til slutt.

Bruk av parenteser ( ) kan bidra til å tydeliggjøre og kontrollere rekkefølgen på evalueringen i uttrykkene dine.

Oppgave

Sveip for å begynne å kode

I den nåværende Fitness Tracker-koden gjør flere nestede if-setninger logikken vanskeligere å lese og vedlikeholde. Din oppgave er å skrive om koden ved å bruke én enkelt, konsis if-setning med logiske operatorer. Bruk den logiske operatoren and for å kombinere flere betingelser.

Treningsmål bør følges opp effektivt, og det samme gjelder koden din! Den nåværende implementeringen sjekker om:

  1. Brukeren ikke har nådd sitt stegmål.
  2. Brukeren ikke har forbrent nok kalorier.
  3. Brukeren ikke trente om morgenen.

Skriv om koden for å forbedre lesbarheten, samtidig som du beholder den samme logikken.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt