Du vil sjekke om brukeren er over 16 år og har fullført trafikalt grunnkurs. To betingelser som begge må være oppfylt. Med en enkelt if-setning kan du bare sjekke én ting om gangen, men med logiske operatorer i Python kombinerer du flere betingelser i én linje. De tre operatorene du trenger er and, or og not.
and krever at begge betingelsene er sanne
Operatoren and returnerer True bare hvis betingelsen på begge sider er True. Er én av dem False, blir hele uttrykket False:
alder = int(input("Alder: "))
kurs = input("Fullført trafikalt grunnkurs? (ja/nei): ")
if alder >= 16 and kurs == "ja":
print("Du kan starte øvelseskjøring")
Begge delene må stemme. Er alderen 17 men svaret "nei", er uttrykket False. Er svaret "ja" men alderen 14, er det også False. Bare når begge betingelsene er oppfylt, kjører koden inne i if-blokken.
or krever bare at én betingelse er sann
Med or holder det at én av sidene er True for at hele uttrykket skal være True:
dag = input("Hvilken dag er det? ")
if dag == "lørdag" or dag == "søndag":
print("Det er helg!")
Skriver brukeren "lørdag", er den første betingelsen True, og det spiller ingen rolle hva den andre evalueres til. Skriver brukeren "søndag", er den andre True. Bare hvis ingen av dem stemmer, blir uttrykket False.
En vanlig feil er å skrive if dag == "lørdag" or "søndag". Det ser logisk ut på norsk, men Python leser det som to separate uttrykk: dag == "lørdag" og "søndag". Strengen "søndag" er alltid "truthy" (mer om det lenger ned), så betingelsen blir alltid True. Du må skrive sammenligningen fullt ut på begge sider av or.
not snur resultatet
Operatoren not inverterer en boolsk verdi. True blir False, og False blir True:
innlogget = False
if not innlogget:
print("Vennligst logg inn")
Betingelsen not innlogget betyr "hvis innlogget er False". Det er mer lesbart enn å skrive if innlogget == False. Du bruker not når du vil sjekke at noe ikke er tilfellet.
Not er også nyttig i while-løkker. Betingelsen while not ferdig kjører løkken så lenge variabelen ferdig er False, noe som gir en naturlig og lesbar struktur.
Kombinere flere logiske operatorer
Du kan bruke and, or og not i samme uttrykk. Da er det viktig å vite rekkefølgen Python evaluerer dem i: not først, deretter and, til slutt or.
if alder >= 16 and har_kurs or er_instruktor:
Python leser dette som (alder >= 16 and har_kurs) or er_instruktor. Hvis du mente noe annet, bruk parenteser for å gjøre det tydelig:
if alder >= 16 and (har_kurs or er_instruktor):
Parenteser gjør koden lettere å lese, selv når de ikke er strengt nødvendige. Bruk dem hver gang uttrykket har mer enn to betingelser.
Kortslutningsevaluering
Python evaluerer logiske uttrykk fra venstre mot høyre og stopper så tidlig som mulig. Med and stopper den ved den første False-verdien, fordi resultatet uansett blir False. Med or stopper den ved den første True-verdien, fordi resultatet uansett blir True.
Denne oppførselen kalles kortslutningsevaluering (short-circuit evaluation), og den har en praktisk konsekvens: du kan plassere den billigste sjekken først. Hvis den første betingelsen allerede avgjør resultatet, evalueres ikke resten.
Det er også nyttig som sikkerhetsnett. Du kan skrive if liste and liste[0] == "test" uten å risikere feil. Hvis listen er tom (og dermed "falsy"), hopper Python over liste[0] helt.
Truthy og falsy verdier
I Python har alle verdier en "sannhetsverdi". Følgende regnes som falsy (behandles som False):
- False, None, 0, 0.0
- Tomme sekvenser: "" (tom streng), [] (tom liste), () (tom tuple), {} (tom ordbok)
Alt annet er truthy. Det betyr at du kan bruke variabler direkte i betingelser uten å sammenligne med True eller False:
navn = input("Ditt navn: ")
if navn:
print("Hei, " + navn)
else:
print("Du skrev ikke inn noe")
Hvis brukeren trykker Enter uten å skrive noe, er navn en tom streng, som er falsy. Skriver brukeren noe, er strengen truthy.
Logiske operatorer i praksis med elif
Logiske operatorer og elif utfyller hverandre. Du bruker and og or for å kombinere betingelser innenfor én sjekk, og elif for å skille mellom ulike scenarier:
if alder >= 16 and kurs == "ja":
print("Du kan øvelseskjøre")
elif alder >= 16 and kurs == "nei":
print("Fullfør trafikalt grunnkurs først")
else:
print("Du må være 16 år eller eldre")
Hvert utfall håndteres med sin egen blokk. Logikken er tydelig uten nøsting, og koden er lett å utvide med nye scenarier.
Neste steg
Logiske operatorer gjør if-setninger mye kraftigere, men de er like nyttige i while-løkker. Betingelsen i en while-løkke kan inneholde and, or og not for å kontrollere nøyaktig når løkken skal stoppe. Python-dokumentasjonen har en detaljert oversikt over boolske operasjoner med flere eksempler.
Denne videoen er hentet fra kurset Python for nybegynnere på Utdannet.no. Kurset dekker logiske operatorer sammen med betingelser, løkker og sammensatte uttrykk, slik at du lærer å kombinere dem i virkelige programmer.




