Lær å bruke for- og while-løkker, range(), break og continue, og nøstede løkker.
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.
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
4Forklaring: 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, 1Iterere 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
nIterere 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!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 = 70range(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.
Ei uendeleg løkke oppstår når vilkåret i ei while-løkke aldri blir False. Då køyrer programmet for alltid:
# ADVARSEL: Uendelig løkke!
teller = 1
while teller <= 5:
print(teller)
# Feil: Vi glemte å øke teller!Denne løkka skriv ut 1 i all æve fordi teller aldri endrar seg. For å stoppe eit program som heng i ei uendeleg løkke, trykk Ctrl+C.
Sørg alltid for at noko inne i while-løkka endrar vilkåret slik at det til slutt blir False.
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")
breakKøyring gir:
Fant det! 56 er delelig med 7Utan 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
10Tala 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 radKø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 = 25Den 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:
*
**
***
****
*****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.00Vi 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.
Eitt av dei vanlegaste mønstera i programmering er akkumulator-mønsteret: du opprettar ein variabel (akkumulatoren) før løkka, og oppdaterer han for kvar iterasjon. Til dømes total = 0 som akkumulerer ein sum, eller antall = 0 som tel talet på iterasjonar. Dette mønsteret blir brukt heile tida i praksis.
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
| Begrep | Forklaring |
|---|---|
| Løkke | Kontrollstruktur som gjentar kode |
| range() | Funksjon som lager en tallserie |
| break | Avbryter loekken |
| continue | Hopper til neste iterasjon |
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.