6.5

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.

50 min
12 oppgaver
Sporingstabellwhile-løkkerLister og sentralmålFunksjoner og if-testerTolke utskrift
Din fremgang i kapitlet
0 / 12 oppgaver
Kapitlets plass i kurset

Å 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

PythonBetydning
x = 5variabelen 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 f(x)f(x)
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.
✏️Eksempel 1: Følge et program år for år

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))

årbeløp
15000⋅1,03=51505000 \cdot 1{,}03 = 5150
25150⋅1,03=5304,505150 \cdot 1{,}03 = 5304{,}50
35304,50⋅1,03≈5463,645304{,}50 \cdot 1{,}03 \approx 5463{,}64

1 5150.0
2 5304.5
3 5463.64
Svar: 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.
📝Oppgave 1

Hva skriver programmet ut, og hva regner programmet ut?

a = 1200
b = a * 1.25
print(b)

📝Oppgave 2

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.

✏️Eksempel 2: Sentralmål i et program

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))

7+3+9+4+65=295=5,8\dfrac{7 + 3 + 9 + 4 + 6}{5} = \dfrac{29}{5} = 5{,}8

Sortert: 3, 4, 6, 7, 9. Det midterste tallet er 6.

9−3=69 - 3 = 6

5.8
[3, 4, 6, 7, 9]
6
6

Svar: Gjennomsnittet er 5,8, lista sortert er 3, 4, 6, 7, 9, medianen er 6 og variasjonsbredden er 6.

📝Oppgave 3

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 x=10x = 10.

En if-test kjører linjene under bare hvis betingelsen er sann. == betyr «er lik», og or betyr «eller».

✏️Eksempel 3: En modell som funksjon

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))

f(x)=4500⋅1,035xf(x) = 4500 \cdot 1{,}035^x

f(10)=4500⋅1,03510≈6348f(10) = 4500 \cdot 1{,}035^{10} \approx 6348

6347.694422795044

Svar: Linje 2 er en modell der folketallet starter på 4500 og øker med 3,5 % per år, og xx er antall år etter 2025. Programmet skriver ut at modellen gir omtrent 6348 innbyggere i 2035.

✏️Eksempel 4: Hva kan programmet brukes til?
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.

62+82=36+64=100=1026^2 + 8^2 = 36 + 64 = 100 = 10^2

Trekanten er rettvinklet

Svar: Programmet kan brukes til å sjekke om tre sidelengder gir en rettvinklet trekant. Sidene 6, 10 og 8 gir en rettvinklet trekant.

📝Oppgave 4

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.

✏️Eksempel 5: Hva ønsker Ada å finne ut?

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.85672578216

Kontroll etter 11 år:

beløp = 0
for år in range(11):
    beløp = (beløp + 15000) * 1.03
print(round(beløp))

197880

Svar: Etter 12 år har Ada for første gang minst 200 000 kr. Da har hun omtrent 219 267 kr.

✏️Eksempel 6: Når er utslippet halvert?

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 300:2=150300 : 2 = 150 tonn. Vekstfaktoren 0,88 betyr at utslippet går ned med 12 % per år.

2031
139.3212260352

300⋅0,885≈158,3>150300 \cdot 0{,}88^5 \approx 158{,}3 > 150 og 300⋅0,886≈139,3<150300 \cdot 0{,}88^6 \approx 139{,}3 < 150

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.

📝Oppgave 5

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)

📝Oppgave 6

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?

📝Oppgave 7

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?

📝Oppgave 8

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?

📝Oppgave 9

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)

a

Gi en praktisk tolkning av uttrykket i linje 2.

b

Hva forteller verdien som skrives ut?

Oppgaver i eksamensform

📝Oppgave 10

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.

📝Oppgave 11

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))

a

Forklar hva linjene i løkka regner ut.

b

Hva skriver programmet ut, og hvor lang tid tar det å betale ned lånet?

c

Restlånet blir negativt det siste året. Hva betyr det, og hvor mye må betales det siste året?

Løs oppgaven
📝Oppgave 12

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))

a

Hva skriver programmene ut?

b

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 nn 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.