Tilbake
2.3
Betingelser og valg (if/else)

2.3 Betingelser og valg (if/else)

Lær å bruke if, elif og else for beslutninger, sammenligningsoperatorer og logiske operatorer.

55 min
8 oppgaver
Betingelseif-setningelifSammenligningsoperator
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 8 oppgaver

Vilkår og val (if/else)

Til no har programma våre køyrt frå topp til botn utan å ta nokon avgjerder. Kvar linje blei utført etter tur, uavhengig av kva som skjedde. Men i verkelege program treng vi ofte at datamaskina tek val: «Dersom brukaren skriv riktig passord, gi tilgang. Elles vis ei feilmelding.» Eller: «Dersom temperaturen er under null, vis åtvaring om frost.»

Vilkår og if-setningar er verktøya som gir programma våre evna til å ta slike avgjerder. Dei er ein av dei mest fundamentale byggesteinane i programmering, og du vil bruke dei i nesten alle program du skriv.

I dette kapittelet lærer du å bruke if, elif og else til å kontrollere kva delar av koden som blir køyrde, basert på vilkår du definerer. Vi skal òg sjå på samanlikningsoperatorar og logiske operatorar som lèt deg formulere både enkle og komplekse vilkår.

Vilkår (condition)

Eit vilkår er eit uttrykk som Python evaluerer til anten True (sant) eller False (usant). Vilkår blir brukte i kontrollstrukturar som if-setningar for å avgjere kva kode som skal køyrast. Enkle vilkår brukar samanlikningsoperatorar (som ==, <, >), medan komplekse vilkår kombinerer fleire samanlikningar med logiske operatorar (and, or, not). Resultatet av eit vilkår er alltid ein boolsk verdi.

Samanlikningsoperatorar

Før vi ser på if-setningar, må vi forstå samanlikningsoperatorar. Desse operatorane samanliknar to verdiar 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 samanlikningsoperatorar:

OperatorTydingDømeResultat
==Er lik5 == 5True
!=Er ikkje lik5 != 3True
>Større enn5 > 3True
<Mindre enn5 < 3False
>=Større enn eller lik5 >= 5True
<=Mindre enn eller lik5 <= 3False

Du kan òg samanlikne tekst. Python samanliknar 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-setninga

Ein if-setning lèt deg køyre kode berre dersom eit vilkår er sant:

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 brukaren skrive inn alderen sin og konverterer til heiltal
2. if alder >= 18: sjekkar om alderen er 18 eller høgare
3. Koden med innrykk (4 mellomrom) blir køyrd berre dersom vilkåret er True
4. Dersom vilkåret er False, hoppar Python over dei innrykte linjene

Innrykk er avgjerande i Python. Det er innrykket som fortel Python kva linjer som høyrer til if-blokka. Alle linjer med same innrykk etter if-setninga høyrer til blokka:

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)

Dersom temperaturen er -5, blir alle tre linjene skrivne ut. Dersom temperaturen er 10, blir berre «Ha en fin dag!» skriven ut, fordi dei to første print-setningane er inne i if-blokka.

if-else: To vegar

Ofte vil vi gjere noko dersom vilkåret er sant, og noko anna dersom det er usant. Då brukar vi else:

alder = int(input("Hvor gammel er du? "))

if alder >= 18:
    print("Du er myndig!")
else:
    print("Du er ikke myndig ennå.")

else-blokka blir berre køyrd når vilkåret i if er False. Det er alltid anten if-blokka ELLER else-blokka som blir køyrd, aldri begge.

Døme: Partal eller oddetal

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 brukar vi modulo-operatoren % som gir resten etter divisjon. Dersom resten av divisjon med 2 er 0, er talet eit partal. Elles er det eit oddetal.

if-elif-else: Fleire vegar

Når du har meir enn to moglegheiter, brukar du elif (forkorting for "else if") for å teste fleire vilkår:

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}")

Korleis dette fungerer:
1. Python sjekkar det første vilkåret: poeng >= 90
2. Dersom det er True, blir koden i den blokka køyrd, og resten blir hoppa over
3. Dersom det er False, blir neste vilkår sjekka: poeng >= 80
4. Dette held fram nedover til eit vilkår er True
5. Dersom ingen vilkår er True, blir else-blokka køyrd

Viktig: Rekkjefølgja på vilkåra er avgjerande. Python sjekkar vilkåra frå topp til botn og stoppar ved det første som er sant. Difor startar vi med den høgaste verdien (90) og jobbar oss nedover.

Lat oss sjå eit døme 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 operatorar

Logiske operatorar kombinerer eller endrar sanningsverdiar. Python har tre logiske operatorar: and (og) returnerer True berre dersom begge vilkåra er sanne. or (eller) returnerer True dersom minst eitt av vilkåra er sant. not (ikkje) inverterer sanningsverdien, slik at True blir False og omvendt. Logiske operatorar blir brukte til å lage samansette vilkår i if-setningar.

Kombinere vilkår med and, or og not

Med logiske operatorar kan du kombinere fleire vilkår i éin if-setning:

and - Begge må vere 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.")

Meldinga "Du kan kjøre bil!" blir berre vist dersom BEGGE vilkåra er oppfylte: alderen er minst 18 OG personen har førarkort.

or - Minst éin må vere 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 held det at det er laurdag ELLER sundag for at det skal vere 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 ikkje regnar.

Sanningstabellar

ABA and BA or B
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse
Anot A
TrueFalse
FalseTrue
✏️Påloggingssystem

Lag eit enkelt påloggingssystem der brukaren må skrive inn riktig brukarnamn 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!")

Døme på køyring 1:

=== Pålogging ===
Brukernavn: admin
Passord: hemmelig123
Innlogging vellykket! Velkommen!

Døme på køyring 2:

=== Pålogging ===
Brukernavn: admin
Passord: feil
Feil passord!

Vi brukar and for å sjekke at BEGGE felta er riktige. Deretter brukar vi elif for å gi meir spesifikk tilbakemelding om kva som var feil.

✏️Karakterkalkulator med validering

Lag eit program som konverterer ein 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)")

Døme på køyring:

=== Karakterkalkulator ===
Skriv inn poengsum (0-100): 72
72 poeng gir karakter 4 (God)

Legg merke til at vi sjekkar for ugyldig input først (under 0 eller over 100). Deretter brukar vi elif-kjeda for å finne riktig karakter, frå høgast til lågast poengsum.

Nøsta if-setningar

Du kan plassere if-setningar inne i andre if-setningar. Dette blir kalla 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østa if-setningar kan gjere koden uoversiktleg. Ofte kan du oppnå det same 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 enklare å lese. Som tommelfingerregel bør du unngå å nøste djupare enn to nivå. Dersom koden blir veldig nøsta, prøv å omstrukturere med elif eller logiske operatorar.

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


BegrepForklaring
BetingelseUttrykk som er True eller False
andSann bare hvis begge betingelser er sanne
orSann hvis minst en betingelse er sann
notInverterer en sannhetsverdi

Oppgaver

Lett3 oppgaver
Medium3 oppgaver
Vanskelig2 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.