Bruke løkker og variabler i programmering for å løse matematiske problemer.
Løkker og variablar
I førre kapittel lærte du å skrive enkle program som utfører instruksjonar linje for linje. Men kva om du vil gjere det same mange gonger? Til dømes: kva om du vil skrive ut gongetabellen for ? Du kunne skrive ti print()-kommandoar, men det finst ein mykje betre måte: løkker.
Ei løkke er ein instruksjon som gjentek ein kodeblokk mange gonger. Tenk deg ein karusell som går rundt og rundt – koden i løkka køyrer om igjen og om igjen.
I dette kapittelet skal du lære:
- Korleis variablar kan oppdaterast
- For-løkker for å gjenta kode eit visst tal gonger
- While-løkker for å gjenta kode så lenge eit vilkår er sant
- Å bruke løkker til å utforske talmønster og matematikk
Ein variabel kan endrast undervegs i programmet. Vi kan oppdatere verdien ved å bruke den gamle verdien til variabelen:
teller = 0
teller = teller + 1 # teller er no 1
teller = teller + 1 # teller er no 2
teller = teller + 1 # teller er no 3
print(teller) # Skriv ut 3Forkortingar for vanlege oppdateringar:
| Vanleg skriving | Forkorting |
|---|---|
x = x + 3 | x += 3 |
x = x - 1 | x -= 1 |
x = x * 2 | x *= 2 |
x = x / 5 | x /= 5 |
Desse forkortingane gjer akkurat det same, men er raskare å skrive.
Ei for-løkke gjentek ein kodeblokk eit visst tal gonger. I Python bruker vi for saman med range():
for i in range(5):
print(i)Utskrift:
0
1
2
3
4Korleis det fungerer:
- range(5) gir tala (altså tal, men startar frå )
- Variabelen i tek etter tur verdien , , , og
- For kvar verdi av i køyrer koden som er innrykt under for-linja
Range med start og slutt:
- range(1, 6) gir (frå til, men ikkje med, )
- range(0, 20, 2) gir (frå , steg på , stoppar før )
- range(10, 0, -1) gir (tel nedover)
Viktig: Koden inne i løkka må ha innrykk (4 mellomrom eller 1 tab). Dette fortel Python kva som høyrer til løkka.
Skriv eit program som skriv ut gongetabellen for , frå 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 tala
- For kvart tal i blir det skrive ut ei linje med
- Løkka køyrer 10 gonger – mykje enklare enn å skrive 10 separate print()-linjer!
for i in range(5):
print(i)Ho ventar å sjå:
1
2
3
4
5Men det ho faktisk ser, er noko anna. Kva blir skrive ut, og kva må ho endre for å få rett resultat?
Skriv eit program som reknar ut 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 startar med total = 0
- For kvart tal i frå til legg vi det til total
- Etter løkka inneheld total summen av alle tala
Sjekk: Summen kan reknast ut med formelen :
Denne historia er kjend: den unge Carl Friedrich Gauss fann denne formelen allereie som 10-åring!
Ei while-løkke gjentek ein kodeblokk så lenge eit vilkår er sant:
tall = 1
while tall <= 5:
print(tall)
tall += 1Utskrift:
1
2
3
4
5Korleis det fungerer:
1. Python sjekkar vilkåret tall <= 5
2. Dersom det er sant (True), køyrer koden inni løkka
3. Deretter går Python tilbake til steg 1 og sjekkar igjen
4. Når vilkåret blir usant (False), hoppar Python ut av løkka
Samanlikningsoperatorar:
| Operator | Tyding |
|---|---|
== | Er lik |
!= | Er ulik |
< | Mindre enn |
> | Større enn |
<= | Mindre enn eller lik |
>= | Større enn eller lik |
Dersom vilkåret i ei while-løkke aldri blir usant, vil løkka køyre for alltid! Dette blir kalla ei uendeleg løkke.
# IKKJE køyr dette - det stoppar aldri!
tall = 1
while tall > 0:
print(tall)
tall += 1Her veks tall heile tida, og vilkåret tall > 0 er alltid sant.
Tips: Sørg alltid for at noko inni while-løkka bringer deg nærare slutten. Dersom programmet «heng», trykk Ctrl+C for å stoppe det.
Vi startar med kr og doblar beløpet kvar dag. Kor mange dagar tek det før vi har meir 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 dagar har vi kr, som er meir enn kr. Eksponentiell vekst er kraftig!
Bruk ei løkke til å skrive ut dei 10 første trekanttala. Trekanttal 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 differansane mellom trekanttala er – altså dei naturlege tala! Det gir meining fordi .
Skriv to program: eitt som skriv ut alle partal frå til , og eitt som skriv ut alle oddetal frå til .
for i in range(2, 21, 2):
print(i, end=" ")Utskrift: 2 4 6 8 10 12 14 16 18 20
Oddetal:
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) startar på , aukar med for kvart steg, og stoppar før
- range(1, 20, 2) startar på , aukar med for kvart steg, og stoppar før
- end=" " gjer at print() set mellomrom etter kvar verdi i staden for linjeskift
Nøsta løkke
Ei nøsta løkke er ei løkke inne i ei anna løkke. For kvar gjennomkøyring av den ytre løkka køyrer den indre løkka alle sine gjennomkøyringar.
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økka (rad) går frå til . For kvar verdi av rad køyrer den indre løkka (kolonne) frå til . Totalt blir det utskrifter.
Kva skriv 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 eit program som skriv ut gongetabellen for (frå til ) ved å bruke ei for-løkke.
Skriv eit program som reknar ut summen ved å bruke ei for-løkke.
Kva skriv 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 eit program som bruker ei for-løkke til å rekne ut (n-fakultet) for . Hugs at .
Skriv eit program som bruker ei while-løkke til å finne det minste talet slik at .
Skriv eit program som skriv ut alle kvadrattal frå til . Bruk ei while-løkke.
Skriv eit program som bruker ei for-løkke til å skrive ut dei 15 første ledda i Fibonacci-følgja:
Skriv eit program som bruker nøsta løkker til å skrive ut den vesle gongetabellen ( til ).
Bruk ei løkke til å utforske følgjande påstand: «Summen av dei første oddetala er alltid eit kvadrattal.» Skriv eit program som reknar ut summen for og viser at det stemmer.
Oppsummering
Oppdatere variablar
-
x = x + 3 (eller kortforma x += 3) oppdaterer verdien av - Vanleg å bruke ein «teljar» eller «akkumulator» som blir oppdatert i løkka
For-løkke
-
for i in range(n): gjentek koden gonger, med -
range(start, slutt) – frå start til (men ikkje med) slutt-
range(start, slutt, steg) – med eit visst steg mellom verdiane- Koden inni løkka må ha innrykk
While-løkke
-
while vilkår: gjentek koden så lenge vilkåret er sant- Pass på at vilkåret til slutt blir usant, elles får du ei uendeleg løkke
- Nyttig når du ikkje veit på førehand kor mange gonger koden skal køyre
Nøsta løkker
- Ei løkke inne i ei anna løkke
- Blir brukt t.d. til å lage tabellar (rader og kolonnar)
Matematisk utforsking
- Løkker er perfekte for å utforske talmønster (trekanttal, Fibonacci, osv.)
- Vi kan bruke programmering til å stadfeste eller oppdage matematiske samanhengar
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.