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)
Første resultat:
- Python evaluerer
andførst: (calories_burned >= calorie_goal and False, det samme som FalseandFalse) blirFalse; - Deretter brukes
or:steps_taken >= step_goal or FalseblirFalse or False, som girFalse.
Andre resultat:
- Parenteser tvinger Python til å evaluere
steps_taken >= step_goal or calories_burned >= calorie_goalførst. Siden bådesteps_taken >= step_goalogcalories_burned >= calorie_goalerFalse, blir resultatet av parentesenFalse; - Deretter evalueres
False and False, som girFalse.
Tredje resultat:
nothar høyest presedens, sånot (steps_taken >= step_goal)evalueres først. Sidensteps_taken >= step_goalerFalse, blirnot FalsetilTrue;- Deretter evalueres
calories_burned >= calorie_goal, som erFalse; - Til slutt gir
True or FalseresultatetTrue.
Akkurat som logiske operatorer, følger også andre operatorer som sammenligningsoperatorer (>=, <=, ==, osv.) og matematiske operatorer (+, -, *, /, osv.) en bestemt rekkefølge for presedens.
For eksempel:
- Matematiske operatorer som
*og/har høyere presedens enn+og-; - Sammenligningsoperatorer (
<,>,==, osv.) evalueres etter matematiske operasjoner; - 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.
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:
- Brukeren ikke har nådd sitt stegmål.
- Brukeren ikke har forbrent nok kalorier.
- Brukeren ikke trente om morgenen.
Skriv om koden for å forbedre lesbarheten, samtidig som du beholder den samme logikken.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår