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

Kontrollstrukturer og løkker

Til nå har programmene våre kjørt linje for linje fra topp til bunn. Men i virkeligheten må programmer ofte ta valg og gjenta handlinger. Kontrollstrukturer lar oss styre hvilke kodelinjer som kjøres basert på betingelser, og løkker lar oss gjenta kode uten å skrive den flere ganger.

Disse verktøyene er helt sentrale i programmering. Uten dem ville programmene våre vært svært begrensede.

If, elif og else

En if-setning utfører kode bare når en betingelse er sann:

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

Vi kan legge til elif (else if) for flere betingelser, og else for alt annet:

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 tilhører en blokk må være innrykket (vanligvis 4 mellomrom). Python bruker innrykk i stedet for klammer {} for å markere kodeblokker.

✏️Karakterberegning

Lag et program som gir 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 sjekker betingelsene fra toppen. Så snart én betingelse er sann, kjøres den tilhørende blokken og resten hoppes over.

📝Oppgave 1

Hva skrives ut av denne koden?

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

📝Oppgave 2

Skriv et program som ber brukeren om et tall og sjekker om tallet er positivt, negativt eller null. Skriv ut en passende melding.

For-løkker

En for-løkke gjentar kode et bestemt antall ganger. Vi bruker ofte range() for å lage en tallsekvens:

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

range() kan brukes på tre måter:
- range(slutt) — fra 0 til slutt-1
- range(start, slutt) — fra start til slutt-1
- range(start, slutt, steg) — fra start til slutt-1 med angitt steg

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

Vi kan også iterere over strenger og lister:

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

✏️Summere tall med for-løkke

Beregn summen av tallene fra 1 til 100 med en for-løkke.

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

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

range(1, 101) gir tallene 1, 2, 3, ..., 100. For hvert tall legges det til total. Dette er den berømte summen som Gauss fant som barn.

📝Oppgave 3

Hva skrives ut av denne koden?

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

While-løkker

En while-løkke gjentar kode så lenge en betingelse er sann:

while betingelse:
    # Kode som gjentas

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

Advarsel: Hvis betingelsen aldri blir usann, får du en uendelig løkke. Sørg alltid for at noe endrer betingelsen inne i løkken.

✏️Gjetting av tall

Lag et program der brukeren skal gjette et hemmelig tall.

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økken fortsetter så lenge gjett ikke er lik hemmelig. Brukeren får hint etter hvert forsøk.

📝Oppgave 4

Skriv et program som ber brukeren om tall gjentatte ganger, og summerer dem. Programmet skal stoppe når brukeren skriver 0, og skrive ut den totale summen.

Eksempel:

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 avbryter løkken umiddelbart og hopper ut:

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

continue hopper over resten av den gjeldende 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 en løkke tidlig, mens continue er nyttig for å hoppe over visse iterasjoner.

📝Oppgave 5

Hva skrives ut av denne koden?

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

Nøstede løkker

En nøstet løkke er en løkke inne i en annen løkke. For hver iterasjon av den ytre løkken kjøres hele den indre løkken:

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

Output:

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

Den ytre løkken styrer radene, den indre styrer kolonnene. Totalt kjøres print-setningen 3 × 4 = 12 ganger.

✏️Gangetabell

Skriv ut gangetabellen for tallene 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 tallet med 4 tegns bredde for jevne kolonner.

📝Oppgave 6

Skriv et program som bruker nøstede løkker til å skrive ut dette mønsteret:

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

📝Oppgave 7

Skriv et program som finner alle primtall mellom 2 og 50.

Et primtall er et tall som bare er delelig med 1 og seg selv. Bruk en nøstet løkke der den ytre løkken går gjennom tallene og den indre sjekker delelighet.

📝Oppgave 8

Hvor mange ganger skrives "Hei" 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-setninger lar deg styre programflyten basert på betingelser
- Elif og else gir flere forgreninger i beslutningslogikken
- For-løkker med range() gjentar kode et bestemt antall ganger
- While-løkker gjentar kode så lenge en betingelse er sann
- Break avbryter en løkke, mens continue hopper til neste iterasjon
- Nøstede løkker er løkker inne i andre løkker, nyttig for tabeller og matriser

Nøkkelbegreper


BegrepForklaring
If-setningUtfører kode kun når en betingelse er sann
For-løkkeItererer over en sekvens eller et bestemt antall ganger
While-løkkeGjentar kode så lenge betingelsen holder
BreakAvbryter en løkke umiddelbart
ContinueHopper til neste iterasjon
Nøstet løkkeEn løkke inne i en annen 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.