6.5 Lese og tolke Python-program
Forklare hva et program gjør, følge verdier gjennom for- og while-løkker og tolke utskriften i sammenhengen.
Å lese et program
På eksamen i 2P får du ofte et kort Python-program og spørsmålet «Hva ønsker personen å finne ut?» eller «Hva forteller verdiene som skrives ut?». Da må du
- forstå hva hver linje gjør
- følge verdiene gjennom programmet
- forklare resultatet i sammenhengen, for eksempel «etter 6 år er utslippet halvert»
Python leser linjene ovenfra og ned. = betyr «får verdien»: beløp = beløp * 1.03 betyr at beløpet ganges med vekstfaktoren 1,03. Python bruker desimalpunktum, og ** betyr potens.
Byggesteiner du må kjenne
| Python | Betydning |
|---|---|
x = 5 | variabelen x får verdien 5 |
print(x) | skriver ut verdien av x |
for år in range(1, 4): | gjentar linjene med innrykk for år = 1, 2, 3 |
while beløp < 200000: | gjentar linjene med innrykk så lenge betingelsen er sann |
if … : / else: | kjører linjene bare hvis betingelsen er sann / ellers |
def f(x): / return … | lager en funksjon |
L = [7, 3, 9] | en liste med tall |
sum(L), len(L) | summen og antallet tall i lista |
round(x, 2) | runder av til to desimaler |
Linjene som hører til en løkke, en
if eller en funksjon, har innrykk.Hva skriver programmet ut, og hva forteller verdiene?
beløp = 5000
for år in range(1, 4):
beløp = beløp * 1.03
print(år, round(beløp, 2))år | beløp |
|---|---|
| 1 | |
| 2 | |
| 3 |
1 5150.0
2 5304.5
3 5463.64Svar: 5000 kr står på konto med 3 % rente. Programmet skriver ut beløpet etter 1, 2 og 3 år: 5150 kr, 5304,50 kr og 5463,64 kr.Hva skriver programmet ut, og hva regner programmet ut?
a = 1200
b = a * 1.25
print(b)Hva skriver programmet ut? Beskriv en situasjon programmet kan passe til.
pris = 800
for år in range(3):
pris = pris * 0.9
print(pris)Lister og statistikk
Lister brukes ofte til datasett. sum(L) / len(L) er gjennomsnittet. L.sort() sorterer lista fra minst til størst, og L[2] er det tredje tallet (nummereringen starter på 0). I en sortert liste med fem tall er L[2] derfor medianen. max(L) - min(L) er variasjonsbredden.
Hva forteller de fire linjene som skrives ut?
L = [7, 3, 9, 4, 6]
print(sum(L) / len(L))
L.sort()
print(L)
print(L[2])
print(max(L) - min(L))Sortert: 3, 4, 6, 7, 9. Det midterste tallet er 6.
5.8
[3, 4, 6, 7, 9]
6
6Svar: Gjennomsnittet er 5,8, lista sortert er 3, 4, 6, 7, 9, medianen er 6 og variasjonsbredden er 6.
Kari har laget programmet nedenfor. Hva forteller verdien som skrives ut?
L = [3, 8, 5, 6, 8]
a = len(L)
s = sum(L)
print(s / a)Funksjoner og if-tester
def f(x): med return lager en funksjon, slik vi kjenner dem fra modellering. f(10) er funksjonsverdien når .
En if-test kjører linjene under bare hvis betingelsen er sann. == betyr «er lik», og or betyr «eller».
Folketallet i en kommune var 4500 i 2025. Gi en praktisk tolkning av linje 2, og forklar hva programmet skriver ut.
def f(x):
return 4500 * 1.035 ** x
print(f(10))6347.694422795044Svar: Linje 2 er en modell der folketallet starter på 4500 og øker med 3,5 % per år, og er antall år etter 2025. Programmet skriver ut at modellen gir omtrent 6348 innbyggere i 2035.
a = 6
b = 10
c = 8
if (a**2 + b**2 == c**2
or a**2 + c**2 == b**2
or b**2 + c**2 == a**2):
print("Trekanten er",
"rettvinklet")Betingelsen sjekker Pytagoras' setning med hver av de tre sidene som den lengste.
Trekanten er rettvinkletSvar: Programmet kan brukes til å sjekke om tre sidelengder gir en rettvinklet trekant. Sidene 6, 10 og 8 gir en rettvinklet trekant.
Hva skriver programmet ut? Hva kan programmet brukes til?
a = 9
b = 12
c = 15
if a**2 + b**2 == c**2:
print("Ja")
else:
print("Nei")while-løkker: hvor lenge til …?
Et program med while svarer nesten alltid på spørsmålet «hvor lenge tar det før …?». Slik leser du det:
- Startverdiene forteller situasjonen (startbeløp, vekstfaktor, innskudd, uttak).
- Betingelsen etter while forteller hva som skal nås: løkka går så lenge målet ikke er nådd.
- Telleren (ofte år) øker med 1 for hver runde.
- Når løkka stopper, er målet nådd for første gang. Utskriften viser telleren og verdien da.
Ada har laget programmet nedenfor.
beløp = 0
innskudd = 15000
vekstfaktor = 1.03
år = 0
while beløp < 200000:
beløp = beløp + innskudd
beløp = beløp * vekstfaktor
år = år + 1
print(år)
print(beløp)a) Hva ønsker Ada å finne ut?
b) Hva forteller verdiene som skrives ut?
a) Hver runde er ett år: Ada setter inn 15 000 kr, og så får hele beløpet 3 % rente. Løkka går så lenge beløpet er under 200 000 kr.
Svar: Ada vil finne ut hvor mange år hun må spare 15 000 kr i året med 3 % rente før hun har minst 200 000 kr.
b)
12
219266.85672578216Kontroll etter 11 år:
beløp = 0
for år in range(11):
beløp = (beløp + 15000) * 1.03
print(round(beløp))197880Svar: Etter 12 år har Ada for første gang minst 200 000 kr. Da har hun omtrent 219 267 kr.
En bedrift slipper ut 300 tonn CO₂ i 2025. Hva ønsker bedriften å finne ut med programmet, og hva forteller utskriften?
utslipp = 300
mål = utslipp / 2
vf = 0.88
år = 2025
while utslipp > mål:
utslipp = utslipp * vf
år = år + 1
print(år)
print(utslipp)mål er tonn. Vekstfaktoren 0,88 betyr at utslippet går ned med 12 % per år.2031
139.3212260352og
Svar: Bedriften vil finne ut når utslippet er halvert hvis det går ned med 12 % hvert år. I 2031 er utslippet for første gang under 150 tonn, nemlig omtrent 139,3 tonn.
Se nøye etter om innskuddet legges til før eller etter at renten regnes ut. I eksempel 5 får innskuddet rente samme år som det settes inn. Bytter vi om de to linjene, blir sluttbeløpet mindre.
Lag en tabell over x og n for hver runde i løkka, og finn hva programmet skriver ut.
x = 100
n = 0
while x > 50:
x = x * 0.8
n = n + 1
print(n, x)Programmet handler om verdien av en bil.
bil = 350000
år = 0
while bil > 175000:
bil = bil * 0.85
år = år + 1
print(år)
print(bil)Hva ønsker programmereren å finne ut, og hva forteller verdiene som skrives ut?
Johann har arvet penger og har laget programmet nedenfor.
konto = 800000
uttak = 60000
vf = 1.04
år = 0
while konto >= 60000:
konto = konto * vf - uttak
år = år + 1
print(år)
print(konto)Hva forteller programmet om planen til Johann, og hva forteller verdiene som skrives ut?
Lista inneholder temperaturen klokka 12 hver dag i en uke.
temperaturer = [18, 22, 25, 19,
21, 17, 24]
antall = 0
for t in temperaturer:
if t > 20:
antall = antall + 1
print(antall)
print(antall / len(temperaturer))Hva forteller de to verdiene som skrives ut?
Sara har lest at en bedrift slipper ut 120 tonn CO₂ i 2025 og vil redusere utslippet med 4 % per år.
def f(x):
return 120 * 0.96 ** x
x = 0
s = 0
while x < 10:
s = s + f(x)
x = x + 1
print(s)Gi en praktisk tolkning av uttrykket i linje 2.
Hva forteller verdien som skrives ut?
Oppgaver i eksamensform
Programmet nedenfor er gitt.
L = [12, 5, 9, 15, 7, 10, 8]
L.sort()
print(L)
print(L[3])
print(sum(L) / len(L))Hva skriver programmet ut? Forklar hvorfor L[3] er medianen.
Et lån på 50 000 kr har 5 % rente per år og betales ned med 12 000 kr i året.
restlån = 50000
terminbeløp = 12000
år = 0
while restlån > 0:
renter = restlån * 0.05
avdrag = terminbeløp - renter
restlån = restlån - avdrag
år = år + 1
print(år, round(renter, 2),
round(avdrag, 2),
round(restlån, 2))Forklar hva linjene i løkka regner ut.
Hva skriver programmet ut, og hvor lang tid tar det å betale ned lånet?
Restlånet blir negativt det siste året. Hva betyr det, og hvor mye må betales det siste året?
Ola og Eva sparer 10 000 kr i året i 10 år med 4 % rente. De har laget hvert sitt program.
Ola:
beløp = 0
for år in range(10):
beløp = beløp * 1.04 + 10000
print(round(beløp))Eva:
beløp = 0
for år in range(10):
beløp = (beløp + 10000) * 1.04
print(round(beløp))Hva skriver programmene ut?
Forklar forskjellen.
Oppsummering
- Les programmet ovenfra og ned, og følg verdiene i en tabell.
- while betyr «så lenge»: programmet finner når et mål nås for første gang.
- for … in range(n) gjentar ganger.
- Forklar alltid resultatet i sammenhengen: hva betyr tallet, og hvilken enhet har det?
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.