Lær å bruke if, elif og else for beslutninger, sammenligningsoperatorer og logiske operatorer.
Betingelser og valg (if/else)
Til nå har programmene våre kjørt fra topp til bunn uten å ta noen beslutninger. Hver linje ble utført etter tur, uavhengig av hva som skjedde. Men i virkelige programmer trenger vi ofte at datamaskinen tar valg: «Hvis brukeren skriver riktig passord, gi tilgang. Ellers vis en feilmelding.» Eller: «Hvis temperaturen er under null, vis advarsel om frost.»
Betingelser og if-setninger er verktøyene som gir programmene våre evnen til å ta slike beslutninger. De er en av de mest fundamentale byggesteinene i programmering, og du vil bruke dem i nesten alle programmer du skriver.
I dette kapittelet lærer du å bruke if, elif og else til å kontrollere hvilke deler av koden som kjøres, basert på betingelser du definerer. Vi skal også se på sammenligningsoperatorer og logiske operatorer som lar deg formulere både enkle og komplekse betingelser.
En betingelse er et uttrykk som Python evaluerer til enten True (sant) eller False (usant). Betingelser brukes i kontrollstrukturer som if-setninger for å bestemme hvilken kode som skal kjøres. Enkle betingelser bruker sammenligningsoperatorer (som ==, <, >), mens komplekse betingelser kombinerer flere sammenligninger med logiske operatorer (and, or, not). Resultatet av en betingelse er alltid en boolsk verdi.
Sammenligningsoperatorer
Før vi ser på if-setninger, må vi forstå sammenligningsoperatorer. Disse operatorene sammenligner to verdier og returnerer True eller False:
# Sammenligningsoperatorer
print(5 == 5) # True (er lik)
print(5 != 3) # True (er ikke lik)
print(5 > 3) # True (større enn)
print(5 < 3) # False (mindre enn)
print(5 >= 5) # True (større enn eller lik)
print(5 <= 3) # False (mindre enn eller lik)Oversikt over sammenligningsoperatorer:
| Operator | Betydning | Eksempel | Resultat |
|---|---|---|---|
== | Er lik | 5 == 5 | True |
!= | Er ikke lik | 5 != 3 | True |
> | Større enn | 5 > 3 | True |
< | Mindre enn | 5 < 3 | False |
>= | Større enn eller lik | 5 >= 5 | True |
<= | Mindre enn eller lik | 5 <= 3 | False |
Du kan også sammenligne tekst. Python sammenligner tekst alfabetisk:
print("anna" < "bjørn") # True (a kommer før b)
print("hei" == "hei") # True
print("Hei" == "hei") # False (stor H er ikke lik liten h)if-setningen
En if-setning lar deg kjøre kode bare hvis en betingelse er sann:
alder = int(input("Hvor gammel er du? "))
if alder >= 18:
print("Du er myndig!")
print("Du kan stemme ved valg.")Forklaring linje for linje:
1. Vi ber brukeren skrive inn alderen sin og konverterer til heltall
2. if alder >= 18: sjekker om alderen er 18 eller høyere
3. Koden med innrykk (4 mellomrom) kjøres bare hvis betingelsen er True
4. Hvis betingelsen er False, hopper Python over de innrykkede linjene
Innrykk er avgjørende i Python. Det er innrykket som forteller Python hvilke linjer som hører til if-blokken. Alle linjer med samme innrykk etter if-setningen tilhører blokken:
temperatur = -5
if temperatur < 0:
print("Det er minusgrader!") # Inne i if-blokken
print("Kle deg godt!") # Inne i if-blokken
print("Ha en fin dag!") # Utenfor if-blokken (kjøres alltid)Hvis temperaturen er -5, skrives alle tre linjene ut. Hvis temperaturen er 10, skrives bare «Ha en fin dag!» ut, fordi de to første print-setningene er inne i if-blokken.
if-else: To veier
Ofte vil vi gjøre noe hvis betingelsen er sann, og noe annet hvis den er usann. Da bruker vi else:
alder = int(input("Hvor gammel er du? "))
if alder >= 18:
print("Du er myndig!")
else:
print("Du er ikke myndig ennå.")else-blokken kjøres bare når betingelsen i if er False. Det er alltid enten if-blokken ELLER else-blokken som kjøres, aldri begge.
Eksempel: Partall eller oddetall
tall = int(input("Skriv inn et tall: "))
if tall % 2 == 0:
print(f"{tall} er et partall")
else:
print(f"{tall} er et oddetall")Her bruker vi modulo-operatoren % som gir resten etter divisjon. Hvis resten av divisjon med 2 er 0, er tallet et partall. Ellers er det et oddetall.
if-elif-else: Flere veier
Når du har mer enn to muligheter, bruker du elif (forkortelse for "else if") for å teste flere betingelser:
poeng = int(input("Hvor mange poeng fikk du? "))
if poeng >= 90:
karakter = "A"
elif poeng >= 80:
karakter = "B"
elif poeng >= 60:
karakter = "C"
elif poeng >= 40:
karakter = "D"
else:
karakter = "F"
print(f"Du fikk karakteren {karakter}")Hvordan dette fungerer:
1. Python sjekker den første betingelsen: poeng >= 90
2. Hvis den er True, kjøres koden i den blokken, og resten hoppes over
3. Hvis den er False, sjekkes neste betingelse: poeng >= 80
4. Dette fortsetter nedover til en betingelse er True
5. Hvis ingen betingelser er True, kjøres else-blokken
Viktig: Rekkefølgen på betingelsene er avgjørende. Python sjekker betingelsene fra topp til bunn og stopper ved den første som er sann. Derfor starter vi med den høyeste verdien (90) og jobber oss nedover.
La oss se et eksempel med vær:
temperatur = float(input("Hva er temperaturen? "))
if temperatur > 30:
print("Det er tropisk varmt! Finn et basseng!")
elif temperatur > 20:
print("Deilig sommertemperatur!")
elif temperatur > 10:
print("Behagelig, men ta med en jakke.")
elif temperatur > 0:
print("Det er kjølig. Kle deg godt.")
else:
print("Det er minusgrader! Hold deg inne!")Logiske operatorer kombinerer eller endrer sannhetsverdier. Python har tre logiske operatorer: and (og) returnerer True bare hvis begge betingelsene er sanne. or (eller) returnerer True hvis minst én av betingelsene er sann. not (ikke) inverterer sannhetsverdien, slik at True blir False og omvendt. Logiske operatorer brukes til å lage sammensatte betingelser i if-setninger.
Kombinere betingelser med and, or og not
Med logiske operatorer kan du kombinere flere betingelser i én if-setning:
and - Begge må være sanne
alder = int(input("Alder: "))
har_lappen = input("Har du førerkort? (ja/nei): ")
if alder >= 18 and har_lappen == "ja":
print("Du kan kjøre bil!")
else:
print("Du kan ikke kjøre bil.")Meldingen "Du kan kjøre bil!" vises bare hvis BEGGE betingelsene er oppfylt: alderen er minst 18 OG personen har førerkort.
or - Minst én må være sann
dag = input("Hvilken dag er det? ").lower()
if dag == "lørdag" or dag == "søndag":
print("Det er helg! Sov lenge!")
else:
print("Det er hverdag. Opp og hopp!")Her holder det at det er lørdag ELLER søndag for at det skal være helg.
not - Inverterer verdien
regner = input("Regner det? (ja/nei): ") == "ja"
if not regner:
print("Fint vær! Gå en tur!")
else:
print("Ta med paraply!")not regner er True når regner er False, altså når det ikke regner.
Sannhetstabeller
| A | B | A and B | A or B |
|---|---|---|---|
| True | True | True | True |
| True | False | False | True |
| False | True | False | True |
| False | False | False | False |
| A | not A | ||
| True | False | ||
| False | True |
Lag et enkelt påloggingssystem der brukeren må skrive inn riktig brukernavn OG riktig passord for å få tilgang.
# Enkelt påloggingssystem
print("=== Pålogging ===")
# Riktig brukernavn og passord
riktig_brukernavn = "admin"
riktig_passord = "hemmelig123"
# Les inn fra brukeren
brukernavn = input("Brukernavn: ")
passord = input("Passord: ")
# Sjekk om begge er riktige
if brukernavn == riktig_brukernavn and passord == riktig_passord:
print("Innlogging vellykket! Velkommen!")
elif brukernavn != riktig_brukernavn:
print("Feil brukernavn!")
else:
print("Feil passord!")Eksempel på kjøring 1:
=== Pålogging ===
Brukernavn: admin
Passord: hemmelig123
Innlogging vellykket! Velkommen!Eksempel på kjøring 2:
=== Pålogging ===
Brukernavn: admin
Passord: feil
Feil passord!Vi bruker and for å sjekke at BEGGE feltene er riktige. Deretter bruker vi elif for å gi mer spesifikk tilbakemelding om hva som var feil.
Lag et program som konverterer en poengsum (0-100) til norsk karakter (1-6) og validerer at inputen er gyldig.
# Karakterkalkulator
print("=== Karakterkalkulator ===")
poeng = int(input("Skriv inn poengsum (0-100): "))
# Valider inputen
if poeng < 0 or poeng > 100:
print("Ugyldig poengsum! Må være mellom 0 og 100.")
elif poeng >= 90:
print(f"{poeng} poeng gir karakter 6 (Fremragende)")
elif poeng >= 77:
print(f"{poeng} poeng gir karakter 5 (Meget god)")
elif poeng >= 63:
print(f"{poeng} poeng gir karakter 4 (God)")
elif poeng >= 50:
print(f"{poeng} poeng gir karakter 3 (Nokså god)")
elif poeng >= 35:
print(f"{poeng} poeng gir karakter 2 (Lav)")
else:
print(f"{poeng} poeng gir karakter 1 (Meget lav)")Eksempel på kjøring:
=== Karakterkalkulator ===
Skriv inn poengsum (0-100): 72
72 poeng gir karakter 4 (God)Legg merke til at vi sjekker for ugyldig input først (under 0 eller over 100). Deretter bruker vi elif-kjeden for å finne riktig karakter, fra høyest til lavest poengsum.
Nøstede if-setninger
Du kan plassere if-setninger inne i andre if-setninger. Dette kalles nøsting:
alder = int(input("Alder: "))
if alder >= 13:
print("Du kan opprette konto på sosiale medier.")
if alder >= 18:
print("Du kan også opprette konto uten foreldresamtykke.")
else:
print("Men du trenger foreldresamtykke.")
else:
print("Du er for ung for sosiale medier.")Nøstede if-setninger kan gjøre koden uoversiktlig. Ofte kan du oppnå det samme med and:
# Samme logikk uten nøsting:
if alder >= 18:
print("Du kan opprette konto uten foreldresamtykke.")
elif alder >= 13:
print("Du kan opprette konto, men trenger foreldresamtykke.")
else:
print("Du er for ung for sosiale medier.")Den andre versjonen er enklere å lese. Som tommelfingerregel bør du unngå å nøste dypere enn to nivåer. Hvis koden blir veldig nøstet, prøv å omstrukturere med elif eller logiske operatorer.
= er tilordning og == er sammenligning. if alder = 18: gir feil. Riktig er if alder == 18:.Glemmer kolon: Etter if, elif og else må det alltid stå kolon (:). if alder >= 18 gir feil. Riktig er if alder >= 18:.
Feil innrykk: Koden inne i en if-blokk må ha konsistent innrykk (4 mellomrom). Blanding av tabs og mellomrom kan gi uventede feil.
Rekkefølge i elif: Sjekk betingelsene i riktig rekkefølge. Hvis du sjekker poeng >= 40 før poeng >= 90, vil alle poeng over 40 matche den første betingelsen.
Når du skriver if/elif/else-setninger, test programmet med verdier som utløser hver gren. Hvis du har en if-elif-elif-else, bør du teste minst fire forskjellige verdier, én for hver gren. Inkluder også grenseverdier, for eksempel hvis betingelsen er >= 18, test med 17, 18 og 19.
Oppsummering
I dette kapittelet har du lært:
- Betingelse: et uttrykk som evalueres til True eller False.
- Sammenligningsoperatorer: ==, !=, <, >, <=, >=.
- if/elif/else: styrer programflyten basert på betingelser.
- Logiske operatorer: and, or og not kombinerer betingelser.
- Noestede if-setninger: if inne i if.
Noekkelbegreper
| Begrep | Forklaring |
|---|---|
| Betingelse | Uttrykk som er True eller False |
| and | Sann bare hvis begge betingelser er sanne |
| or | Sann hvis minst en betingelse er sann |
| not | Inverterer en sannhetsverdi |
Oppgaver
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.