Bruke løkker og variabler i programmering for å løse matematiske problemer.
Løkker og variabler
I forrige kapittel lærte du å skrive enkle programmer som utfører instruksjoner linje for linje. Men hva om du vil gjøre det samme mange ganger? For eksempel: hva om du vil skrive ut gangetabellen for ? Du kunne skrive ti print()-kommandoer, men det finnes en mye bedre måte: løkker.
En løkke er en instruksjon som gjentar en kodeblokk mange ganger. Tenk deg en karrusell som går rundt og rundt – koden i løkken kjøres om igjen og om igjen.
I dette kapittelet skal du lære:
- Hvordan variabler kan oppdateres
- For-løkker for å gjenta kode et bestemt antall ganger
- While-løkker for å gjenta kode så lenge en betingelse er sann
- Å bruke løkker til å utforske tallmønstre og matematikk
En variabel kan endres underveis i programmet. Vi kan oppdatere verdien ved å bruke variabelens gamle verdi:
teller = 0
teller = teller + 1 # teller er nå 1
teller = teller + 1 # teller er nå 2
teller = teller + 1 # teller er nå 3
print(teller) # Skriver ut 3Forkortelser for vanlige oppdateringer:
| Vanlig skriving | Forkorting |
|---|---|
x = x + 3 | x += 3 |
x = x - 1 | x -= 1 |
x = x * 2 | x *= 2 |
x = x / 5 | x /= 5 |
Disse forkortingene gjør akkurat det samme, men er raskere å skrive.
En for-løkke gjentar en kodeblokk et bestemt antall ganger. I Python bruker vi for sammen med range():
for i in range(5):
print(i)Utskrift:
0
1
2
3
4Hvordan det fungerer:
- range(5) gir tallene (altså tall, men starter fra )
- Variabelen i tar etter tur verdien , , , og
- For hver verdi av i kjøres koden som er innrykket under for-linjen
Range med start og slutt:
- range(1, 6) gir (fra til, men ikke med, )
- range(0, 20, 2) gir (fra , steg på , stopper før )
- range(10, 0, -1) gir (teller nedover)
Viktig: Koden inne i løkken må ha innrykk (4 mellomrom eller 1 tab). Dette forteller Python hva som tilhører løkken.
Skriv et program som skriver ut gangetabellen for , fra til .
for i in range(1, 11):
print(7, "*", i, "=", 7 * i)Utskrift:
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
7 * 10 = 70Forklaring:
- range(1, 11) gir tallene
- For hvert tall i skrives det ut en linje med
- Løkken kjører 10 ganger – mye enklere enn å skrive 10 separate print()-linjer!
for i in range(5):
print(i)Hun forventer å se:
1
2
3
4
5Men det hun faktisk ser, er noe annet. Hva skrives ut, og hva må hun endre for å få riktig resultat?
Skriv et program som beregner summen .
total = 0
for i in range(1, 101):
total += i
print("Summen fra 1 til 100 er:", total)Utskrift:
Summen fra 1 til 100 er: 5050Forklaring:
- Vi starter med total = 0
- For hvert tall i fra til legger vi det til total
- Etter løkken inneholder total summen av alle tallene
Sjekk: Summen kan beregnes med formelen :
Denne historien er kjent: den unge Carl Friedrich Gauss fant denne formelen allerede som 10-åring!
En while-løkke gjentar en kodeblokk så lenge en betingelse er sann:
tall = 1
while tall <= 5:
print(tall)
tall += 1Utskrift:
1
2
3
4
5Hvordan det fungerer:
1. Python sjekker betingelsen tall <= 5
2. Hvis den er sann (True), kjøres koden inni løkken
3. Deretter går Python tilbake til steg 1 og sjekker igjen
4. Når betingelsen blir usann (False), hopper Python ut av løkken
Sammenligningsoperatorer:
| Operator | Betydning |
|---|---|
== | Er lik |
!= | Er ulik |
< | Mindre enn |
> | Større enn |
<= | Mindre enn eller lik |
>= | Større enn eller lik |
Hvis betingelsen i en while-løkke aldri blir usann, vil løkken kjøre for alltid! Dette kalles en uendelig løkke.
# IKKE kjør dette - det stopper aldri!
tall = 1
while tall > 0:
print(tall)
tall += 1Her vokser tall hele tiden, og betingelsen tall > 0 er alltid sann.
Tips: Sørg alltid for at noe inni while-løkken bringer deg nærmere slutten. Hvis programmet «henger», trykk Ctrl+C for å stoppe det.
Vi starter med kr og dobler beløpet hver dag. Hvor mange dager tar det før vi har mer enn kr?
belop = 1
dager = 0
while belop <= 1000:
belop = belop * 2
dager = dager + 1
print("Etter", dager, "dager har du", belop, "kr")Utskrift:
Etter 10 dager har du 1024 krSteg for steg:
| Dag | Beløp |
|---|---|
| kr | |
| kr | |
| kr | |
| kr | |
| kr | |
| kr | |
| kr | |
| kr | |
| kr | |
| kr | |
| kr |
Etter dager har vi kr, som er mer enn kr. Eksponentiell vekst er kraftig!
Bruk en løkke til å skrive ut de 10 første trekanttallene. Trekanttall nummer er .
for n in range(1, 11):
trekanttall = n * (n + 1) // 2
print("T" + str(n) + " =", trekanttall)Utskrift:
T1 = 1
T2 = 3
T3 = 6
T4 = 10
T5 = 15
T6 = 21
T7 = 28
T8 = 36
T9 = 45
T10 = 55Mønsteret:
Legg merke til at differansene mellom trekanttallene er – altså de naturlige tallene! Det gir mening fordi .
Skriv to programmer: ett som skriver ut alle partall fra til , og ett som skriver ut alle oddetall fra til .
for i in range(2, 21, 2):
print(i, end=" ")Utskrift: 2 4 6 8 10 12 14 16 18 20
Oddetall:
for i in range(1, 20, 2):
print(i, end=" ")Utskrift: 1 3 5 7 9 11 13 15 17 19
Forklaring:
- range(2, 21, 2) starter på , øker med for hvert steg, og stopper før
- range(1, 20, 2) starter på , øker med for hvert steg, og stopper før
- end=" " gjør at print() setter mellomrom etter hver verdi i stedet for linjeskift
Nestet løkke
En nestet løkke er en løkke inne i en annen løkke. For hver gjennomkjøring av den ytre løkken, kjører den indre løkken alle sine gjennomkjøringer.
for rad in range(1, 4):
for kolonne in range(1, 4):
print(rad, "*", kolonne, "=", rad * kolonne)
print() # Tom linje mellom radeneUtskrift:
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9Forklaring: Den ytre løkken (rad) går fra til . For hver verdi av rad kjører den indre løkken (kolonne) fra til . Totalt blir det utskrifter.
Hva skriver dette programmet ut?
for i in range(4):
print(i)for i in range(1, 6):
print(i * 2)for i in range(3, 0, -1):
print(i)
print("Start!")Skriv et program som skriver ut gangetabellen for (fra til ) ved å bruke en for-løkke.
Skriv et program som beregner summen ved å bruke en for-løkke.
Hva skriver dette programmet ut?
x = 1
for i in range(5):
x = x * 2
print(x)total = 0
for i in range(1, 6):
total += i * i
print(total)Skriv et program som bruker en for-løkke til å beregne (n-fakultet) for . Husk at .
Skriv et program som bruker en while-løkke til å finne det minste tallet slik at .
Skriv et program som skriver ut alle kvadrattall fra til . Bruk en while-løkke.
Skriv et program som bruker en for-løkke til å skrive ut de 15 første leddene i Fibonacci-følgen:
Skriv et program som bruker nestede løkker til å skrive ut den lille gangetabellen ( til ).
Bruk en løkke til å utforske følgende påstand: «Summen av de første oddetallene er alltid et kvadrattall.» Skriv et program som beregner summen for og viser at det stemmer.
Oppsummering
Oppdatere variabler
-
x = x + 3 (eller kortformen x += 3) oppdaterer verdien av - Vanlig å bruke en «teller» eller «akkumulator» som oppdateres i løkken
For-løkke
-
for i in range(n): gjentar koden ganger, med -
range(start, slutt) – fra start til (men ikke med) slutt-
range(start, slutt, steg) – med et bestemt steg mellom verdiene- Koden inni løkken må ha innrykk
While-løkke
-
while betingelse: gjentar koden så lenge betingelsen er sann- Pass på at betingelsen til slutt blir usann, ellers får du en uendelig løkke
- Nyttig når du ikke vet på forhånd hvor mange ganger koden skal kjøres
Nestede løkker
- En løkke inne i en annen løkke
- Brukes f.eks. til å lage tabeller (rader og kolonner)
Matematisk utforskning
- Løkker er perfekte for å utforske tallmønstre (trekanttall, Fibonacci, osv.)
- Vi kan bruke programmering til å bekrefte eller oppdage matematiske sammenhenger
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.