If-setninger, for-løkker og while-løkker for styring av programflyt.
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.
Ei if-setning utfører kode berre når eit vilkår er sant:
if betingelse:
# Kode som kjører hvis betingelsen er TrueVi 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 TrueViktig: Koden som høyrer til ein blokk må vere innrykt (vanlegvis 4 mellomrom). Python brukar innrykk i staden for klammer {} for å markere kodeblokker.
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.
Kva blir skrive ut av denne koden?
x = 15
if x > 20:
print("Stor")
elif x > 10:
print("Medium")
else:
print("Liten")Skriv eit program som spør brukaren om eit tal og sjekkar om talet er positivt, negativt eller null. Skriv ut ei passande melding.
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, 4range() 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, 8Vi kan òg iterere over strengar og lister:
for bokstav in "Hei":
print(bokstav)
# Skriver ut: H, e, iRekn 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: 5050range(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.
Kva blir skrive ut av denne koden?
for i in range(1, 8, 3):
print(i, end=" ")Ei while-løkke gjentek kode så lenge eit vilkår er sant:
while betingelse:
# Kode som gjentasteller = 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.
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.
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: 16break avbryt løkka straks og hoppar ut:for i in range(10):
if i == 5:
break
print(i)
# Skriver ut: 0, 1, 2, 3, 4continue 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.
Kva blir skrive ut av denne koden?
for i in range(1, 6):
if i == 3:
continue
if i == 5:
break
print(i, end=" ")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 radOutput:
* * * *
* * * *
* * * *Den ytre løkka styrer radene, den indre styrer kolonnane. Totalt blir print-setninga køyrd 3 × 4 = 12 gonger.
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 25f"{resultat:4}" formaterer talet med 4 teikns breidd for jamne kolonnar.
Skriv eit program som brukar nøsta løkker til å skrive ut dette mønsteret:
*
* *
* * *
* * * *
* * * * *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.
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
| Omgrep | Forklaring |
|---|---|
| If-setning | Utfører kode berre når eit vilkår er sant |
| For-løkke | Itererer over ein sekvens eller eit bestemt tal gonger |
| While-løkke | Gjentek kode så lenge vilkåret held |
| Break | Avbryt ei løkke straks |
| Continue | Hoppar til neste iterasjon |
| Nøsta løkke | Ei 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.