Tilbake
3.3
Kontrollstrukturer og løkker

3.3 Kontrollstrukturer og løkker

If-setninger, for-løkker og while-løkker for styring av programflyt.

60 min
8 oppgaver
If-setningerFor-løkkerWhile-løkkerBetingelserNøstede løkker
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 8 oppgaver

Kontrollstrukturar og løkker

Til no har programma våre køyrt linje for linje frå topp til botn. Men i verkelegheita må program ofte ta val og gjenta handlingar. Kontrollstrukturar lèt oss styre kva kodelinjer som blir køyrde basert på vilkår, og løkker lèt oss gjenta kode utan å skrive han fleire gonger.

Desse verktøya er heilt sentrale i programmering. Utan dei ville programma våre vore svært avgrensa.

If, elif og else

Ei if-setning utfører kode berre når eit vilkår er sant:

if betingelse:
    # Kode som kjører hvis betingelsen er True

Vi kan leggje til elif (else if) for fleire vilkår, og else for alt anna:

if betingelse1:
    # Kjører hvis betingelse1 er True
elif betingelse2:
    # Kjører hvis betingelse1 er False og betingelse2 er True
else:
    # Kjører hvis ingen betingelser er True

Viktig: Koden som høyrer til ein blokk må vere innrykt (vanlegvis 4 mellomrom). Python brukar innrykk i staden for klammer {} for å markere kodeblokker.

✏️Karakterberekning

Lag eit program som gjev karakter basert på poengsum (0-100).

poeng = int(input("Skriv inn poeng (0-100): "))

if poeng >= 90:
    karakter = 6
elif poeng >= 77:
    karakter = 5
elif poeng >= 60:
    karakter = 4
elif poeng >= 40:
    karakter = 3
elif poeng >= 20:
    karakter = 2
else:
    karakter = 1

print("Du fikk karakter:", karakter)

Python sjekkar vilkåra frå toppen. Så snart eitt vilkår er sant, blir den tilhøyrande blokka køyrd og resten hoppa over.

📝Oppgave 1

Kva blir skrive ut av denne koden?

x = 15
if x > 20:
    print("Stor")
elif x > 10:
    print("Medium")
else:
    print("Liten")

📝Oppgave 2

Skriv eit program som spør brukaren om eit tal og sjekkar om talet er positivt, negativt eller null. Skriv ut ei passande melding.

For-løkker

Ei for-løkke gjentek kode eit bestemt tal gonger. Vi brukar ofte range() for å lage ein talsekvens:

for i in range(5):
    print(i)
# Skriver ut: 0, 1, 2, 3, 4

range() kan brukast på tre måtar:
- range(slutt) — frå 0 til slutt-1
- range(start, slutt) — frå start til slutt-1
- range(start, slutt, steg) — frå start til slutt-1 med oppgitt steg

for i in range(2, 10, 2):
    print(i)
# Skriver ut: 2, 4, 6, 8

Vi kan òg iterere over strengar og lister:

for bokstav in "Hei":
    print(bokstav)
# Skriver ut: H, e, i

✏️Summere tal med for-løkke

Rekn ut summen av tala frå 1 til 100 med ei for-løkke.

total = 0
for i in range(1, 101):
    total = total + i

print("Summen er:", total)  # Summen er: 5050

range(1, 101) gjev tala 1, 2, 3, ..., 100. For kvart tal blir det lagt til total. Dette er den berømte summen som Gauss fann som barn.

📝Oppgave 3

Kva blir skrive ut av denne koden?

for i in range(1, 8, 3):
    print(i, end=" ")

While-løkker

Ei while-løkke gjentek kode så lenge eit vilkår er sant:

while betingelse:
    # Kode som gjentas

teller = 0
while teller < 5:
    print(teller)
    teller = teller + 1
# Skriver ut: 0, 1, 2, 3, 4

Åtvaring: Dersom vilkåret aldri blir usant, får du ei uendeleg løkke. Sørg alltid for at noko endrar vilkåret inne i løkka.

✏️Gjetting av tal

Lag eit program der brukaren skal gjette eit hemmeleg tal.

hemmelig = 7
gjett = 0

while gjett != hemmelig:
    gjett = int(input("Gjett tallet (1-10): "))
    if gjett < hemmelig:
        print("For lavt!")
    elif gjett > hemmelig:
        print("For høyt!")

print("Riktig! Tallet var", hemmelig)

Løkka held fram så lenge gjett ikkje er lik hemmelig. Brukaren får hint etter kvart forsøk.

📝Oppgave 4

Skriv eit program som spør brukaren om tal gjentekne gonger, og summerer dei. Programmet skal stoppe når brukaren skriv 0, og skrive ut den totale summen.

Døme:

Skriv et tall (0 for å avslutte): 5
Skriv et tall (0 for å avslutte): 3
Skriv et tall (0 for å avslutte): 8
Skriv et tall (0 for å avslutte): 0
Total sum: 16

Break og continue
break avbryt løkka straks og hoppar ut:

for i in range(10):
    if i == 5:
        break
    print(i)
# Skriver ut: 0, 1, 2, 3, 4

continue hoppar over resten av den gjeldande iterasjonen og går til neste:

for i in range(6):
    if i == 3:
        continue
    print(i)
# Skriver ut: 0, 1, 2, 4, 5  (3 hoppes over)

break er nyttig for å stoppe ei løkke tidleg, medan continue er nyttig for å hoppe over visse iterasjonar.

📝Oppgave 5

Kva blir skrive ut av denne koden?

for i in range(1, 6):
    if i == 3:
        continue
    if i == 5:
        break
    print(i, end=" ")

Nøsta løkker

Ei nøsta løkke er ei løkke inne i ei anna løkke. For kvar iterasjon av den ytre løkka blir heile den indre løkka køyrd:

for rad in range(3):
    for kolonne in range(4):
        print("*", end=" ")
    print()  # Ny linje etter hver rad

Output:

* * * *
* * * *
* * * *

Den ytre løkka styrer radene, den indre styrer kolonnane. Totalt blir print-setninga køyrd 3 × 4 = 12 gonger.

✏️Gangetabell

Skriv ut gangetabellen for tala 1 til 5.

for i in range(1, 6):
    for j in range(1, 6):
        resultat = i * j
        print(f"{resultat:4}", end="")
    print()

Output:

   1   2   3   4   5
   2   4   6   8  10
   3   6   9  12  15
   4   8  12  16  20
   5  10  15  20  25

f"{resultat:4}" formaterer talet med 4 teikns breidd for jamne kolonnar.

📝Oppgave 6

Skriv eit program som brukar nøsta løkker til å skrive ut dette mønsteret:

*
* *
* * *
* * * *
* * * * *

📝Oppgave 7

Skriv eit program som finn alle primtal mellom 2 og 50.

Eit primtal er eit tal som berre er deleleg med 1 og seg sjølv. Bruk ei nøsta løkke der den ytre løkka går gjennom tala og den indre sjekkar delelegheit.

📝Oppgave 8

Kor mange gonger blir "Hei" skrive ut i denne koden?

for i in range(3):
    for j in range(i + 1):
        print("Hei")

Oppsummering

I dette kapittelet har du lært:

- If-setningar lèt deg styre programflyten basert på vilkår
- Elif og else gjev fleire forgreiningar i avgjerdslogikken
- For-løkker med range() gjentek kode eit bestemt tal gonger
- While-løkker gjentek kode så lenge eit vilkår er sant
- Break avbryt ei løkke, medan continue hoppar til neste iterasjon
- Nøsta løkker er løkker inne i andre løkker, nyttig for tabellar og matriser

Nøkkelomgrep


OmgrepForklaring
If-setningUtfører kode berre når eit vilkår er sant
For-løkkeItererer over ein sekvens eller eit bestemt tal gonger
While-løkkeGjentek kode så lenge vilkåret held
BreakAvbryt ei løkke straks
ContinueHoppar til neste iterasjon
Nøsta løkkeEi løkke inne i ei anna løkke

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.