Tilbake
2.4
Løkker og gjentakelse

2.4 Løkker og gjentakelse

Lær å bruke for- og while-løkker, range(), break og continue, og nøstede løkker.

60 min
8 oppgaver
Løkkefor-løkkewhile-løkkerange()
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 8 oppgaver

Løkker og gjentaking

Førestill deg at du skal skrive ut tala frå 1 til 100. Utan løkker måtte du skrive 100 print-setningar. Med ei løkke klarar du det med to linjer kode. Løkker er eitt av dei kraftigaste verktøya i programmering fordi dei lèt deg gjenta kode så mange gonger du vil, utan å skrive den same koden om og om igjen.

Python har to typar løkker: for-løkker som itererer over ein bestemt sekvens, og while-løkker som gjentek kode så lenge eit vilkår er sant. I dette kapittelet skal du lære å bruke begge typane, samt spesielle nøkkelord som break og continue for å kontrollere åtferda til løkkene.

Løkke (loop)

Ei løkke er ein kontrollstruktur i programmering som gjentek ein blokk med kode fleire gonger. Løkker er essensielle for å automatisere repetitive oppgåver. I staden for å skrive den same koden hundre gonger, kan du bruke ei løkke som køyrer koden hundre gonger automatisk. Python tilbyr to typar: for-løkker (for å iterere over ein kjend sekvens) og while-løkker (for å gjenta basert på eit vilkår).

for-løkker

Ei for-løkke itererer over ein sekvens og køyrer kodeblokken éin gong for kvart element i sekvensen. Det vanlegaste er å bruke range() for å generere ein talsekvens:

# Skriv ut tallene 0 til 4
for i in range(5):
    print(i)

Køyring gir:

0
1
2
3
4

Forklaring: range(5) genererer tala 0, 1, 2, 3, 4 (5 tal, men startar på 0). For kvar iterasjon får variabelen i neste verdi frå sekvensen, og koden inne i løkka blir køyrd.

range() med ulike argument

# range(start, stopp) - starter på start, stopper FØR stopp
for i in range(1, 6):
    print(i)     # Skriver ut: 1, 2, 3, 4, 5

# range(start, stopp, steg) - med egendefinert steg
for i in range(0, 20, 5):
    print(i)     # Skriver ut: 0, 5, 10, 15

# Telle nedover
for i in range(10, 0, -1):
    print(i)     # Skriver ut: 10, 9, 8, ..., 2, 1

Iterere over tekst

Du kan òg bruke for-løkker til å gå gjennom kvar bokstav i ein tekststreng:

navn = "Python"
for bokstav in navn:
    print(bokstav)

Køyring gir:

P
y
t
h
o
n

Iterere over ei liste

frukter = ["eple", "banan", "appelsin", "druer"]
for frukt in frukter:
    print(f"Jeg liker {frukt}!")

Køyring gir:

Jeg liker eple!
Jeg liker banan!
Jeg liker appelsin!
Jeg liker druer!
✏️Gangetabell med for-løkke

Skriv eit program som spør brukaren om eit tal og skriv ut gangetabellen for det talet (1 til 10).

# Gangetabell
tall = int(input("Hvilket tall vil du se gangetabellen for? "))

print(f"\nGangetabellen for {tall}:")
print("-" * 20)

for i in range(1, 11):
    resultat = tall * i
    print(f"{tall} x {i} = {resultat}")

Døme på køyring (input: 7):

Hvilket tall vil du se gangetabellen for? 7

Gangetabellen for 7:
--------------------
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

range(1, 11) genererer tala 1 til 10. For kvar verdi av i reknar vi ut produktet og skriv ut ei formatert linje. "-" * 20 gjentek bindestreken 20 gonger for å lage ei skiljelinje.

while-løkker

Ei while-løkke gjentek kodeblokken så lenge eit vilkår er sant (True). Vilkåret blir sjekka før kvar iterasjon:

# Telle til 5 med while
teller = 1
while teller <= 5:
    print(teller)
    teller += 1

print("Ferdig!")

Køyring gir:

1
2
3
4
5
Ferdig!

Steg for steg:
1. teller = 1 - variabelen startar på 1
2. while teller <= 5: - er 1 <= 5? Ja (True), køyr blokken
3. Skriv ut 1, auk teller til 2
4. Er 2 <= 5? Ja, køyr blokken...
5. (Held fram til teller er 6)
6. Er 6 <= 5? Nei (False), stopp løkka
7. "Ferdig!" blir skrive ut

Når brukar du while vs. for?

- Bruk for når du veit på førehand kor mange gonger løkka skal køyre
- Bruk while når løkka skal halde fram til eit vilkår endrar seg

# while er perfekt for brukerinteraksjon
svar = ""
while svar != "ja":
    svar = input("Vil du avslutte? (ja/nei): ")

print("Ha det bra!")

Her veit vi ikkje på førehand kor mange gonger brukaren vil svare "nei", så while er det naturlege valet.

break og continue

Python har to spesielle nøkkelord for å kontrollere løkker:

break - Avbryt løkka

break stoppar løkka med ein gong og hoppar ut av ho:

# Finn det første tallet delelig med 7 mellom 50 og 100
for tall in range(50, 101):
    if tall % 7 == 0:
        print(f"Fant det! {tall} er delelig med 7")
        break

Køyring gir:

Fant det! 56 er delelig med 7

Utan break ville løkka halde fram med å leite etter fleire tal. Med break stoppar vi ved det første treffet.

continue - Hopp til neste iterasjon

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

# Skriv ut alle tall fra 1 til 10, unntatt tall delelig med 3
for i in range(1, 11):
    if i % 3 == 0:
        continue  # Hopp over dette tallet
    print(i)

Køyring gir:

1
2
4
5
7
8
10

Tala 3, 6 og 9 blei hoppa over fordi continue blei utløyst.

break i while-løkker

break er spesielt nyttig i while-løkker for å lage kontrollerte utgangar:

# Gjette-spill
import random
hemmelig = random.randint(1, 10)

while True:  # Uendelig løkke
    gjett = int(input("Gjett et tall (1-10): "))

    if gjett == hemmelig:
        print("Riktig! Du gjettet det!")
        break  # Avbryt løkken
    elif gjett < hemmelig:
        print("For lavt! Prøv igjen.")
    else:
        print("For høyt! Prøv igjen.")

Her brukar vi while True (som aldri blir False) saman med break for å avslutte når brukaren gjettar riktig.

Nøsta løkker

Du kan plassere ei løkke inne i ei anna løkke. Den indre løkka blir køyrd ferdig for kvar iterasjon av den ytre løkka:

# Gangetabell 1-5
for i in range(1, 6):
    for j in range(1, 6):
        print(f"{i} x {j} = {i*j:2d}", end="   ")
    print()  # Ny linje etter hver rad

Køyring gir:

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

Den ytre løkka (i) styrer radene, og den indre løkka (j) styrer kolonnane. For i=1 køyrer j gjennom alle verdiar 1-5, deretter aukar i til 2, og j køyrer igjen gjennom 1-5, osv.

end=" " i print() gjer at neste print kjem på same linje (med tre mellomrom mellom). Den tomme print() lagar eit linjeskift etter kvar rad.

Eit enklare døme med nøsta løkker:

# Skriv ut et mønster med stjerner
for rad in range(1, 6):
    for stjerne in range(rad):
        print("*", end="")
    print()

Køyring gir:

*
**
***
****
*****
✏️Summering med løkker

Skriv eit program som lèt brukaren skrive inn tal heilt til dei skriv 0. Programmet skal vise summen, talet på tal og gjennomsnittet.

# Summeringsprogram
print("Skriv inn tall. Skriv 0 for å avslutte.")

total = 0
antall = 0

while True:
    tall = float(input("Tall: "))

    if tall == 0:
        break

    total += tall
    antall += 1

# Vis resultater
if antall > 0:
    gjennomsnitt = total / antall
    print(f"\nDu skrev inn {antall} tall")
    print(f"Summen er {total}")
    print(f"Gjennomsnittet er {gjennomsnitt:.2f}")
else:
    print("Du skrev ikke inn noen tall.")

Døme på køyring:

Skriv inn tall. Skriv 0 for å avslutte.
Tall: 10
Tall: 20
Tall: 30
Tall: 0

Du skrev inn 3 tall
Summen er 60.0
Gjennomsnittet er 20.00

Vi brukar while True med break fordi vi ikkje veit på førehand kor mange tal brukaren vil skrive inn. Vi sjekkar om antall > 0 før vi reknar ut gjennomsnittet for å unngå divisjon med null.

Oppsummering

I dette kapittelet har du lært:

- Løkke: gjentar en kodeblokk flere ganger.
- for-løkke: itererer over en sekvens eller range().
- range(): lager tallserier med start, stopp og steg.
- while-løkke: gjentar så lenge en betingelse er sann.
- break og continue: avbryter eller hopper over i en løkke.
- Noestede løkker: løkke inne i løkke.

Noekkelbegreper


BegrepForklaring
LøkkeKontrollstruktur som gjentar kode
range()Funksjon som lager en tallserie
breakAvbryter loekken
continueHopper til neste iterasjon

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.