6.5

6.5 Lese og tolke Python-program

Forklare kva eit program gjer, følgje verdiar gjennom for- og while-løkker og tolke utskrifta i samanhengen.

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

Å lese eit program

På eksamen i 2P får du ofte eit kort Python-program og spørsmålet «Kva ønskjer personen å finne ut?» eller «Kva fortel verdiane som blir skrivne ut?». Då må du

- forstå kva kvar linje gjer
- følgje verdiane gjennom programmet
- forklare resultatet i samanhengen, til dømes «etter 6 år er utsleppet halvert»

Python les linjene ovanfrå og ned. = tyder «får verdien»: beløp = beløp * 1.03 tyder at beløpet blir gonga med vekstfaktoren 1,03. Python bruker desimalpunktum, og ** tyder potens.

Byggjesteinar du må kjenne

PythonTyding
x = 5variabelen x får verdien 5
print(x)skriv ut verdien av x
for år in range(1, 4):gjentek linjene med innrykk for år = 1, 2, 3
while beløp < 200000:gjentek linjene med innrykk så lenge vilkåret er sant
if … : / else:køyrer linjene berre dersom vilkåret er sant / elles
def f(x): / return …lagar ein funksjon f(x)f(x)
L = [7, 3, 9]ei liste med tal
sum(L), len(L)summen og talet på tal i lista
round(x, 2)rundar av til to desimalar

Linjene som høyrer til ei løkke, ein if eller ein funksjon, har innrykk.
✏️Døme 1: Følgje eit program år for år

Kva skriv programmet ut, og kva fortel verdiane?

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 skriv ut beløpet etter 1, 2 og 3 år: 5150 kr, 5304,50 kr og 5463,64 kr.
📝Oppgave 1

Kva skriv programmet ut, og kva reknar programmet ut?

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

📝Oppgave 2

Kva skriv programmet ut? Skildre ein situasjon programmet kan passe til.

pris = 800
for år in range(3):
    pris = pris * 0.9
print(pris)

Lister og statistikk

Lister blir ofte brukte til datasett. sum(L) / len(L) er gjennomsnittet. L.sort() sorterer lista frå minst til størst, og L[2] er det tredje talet (nummereringa startar på 0). I ei sortert liste med fem tal er L[2] difor medianen. max(L) - min(L) er variasjonsbreidda.

✏️Døme 2: Sentralmål i eit program

Kva fortel dei fire linjene som blir skrivne 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 midtarste talet 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 variasjonsbreidda er 6.

📝Oppgave 3

Kari har laga programmet nedanfor. Kva fortel verdien som blir skriven ut?

L = [3, 8, 5, 6, 8]
a = len(L)
s = sum(L)
print(s / a)

Funksjonar og if-testar

def f(x): med return lagar ein funksjon, slik vi kjenner dei frå modellering. f(10) er funksjonsverdien når x=10x = 10.

Ein if-test køyrer linjene under berre dersom vilkåret er sant. == tyder «er lik», og or tyder «eller».

✏️Døme 3: Ein modell som funksjon

Folketalet i ein kommune var 4500 i 2025. Gi ei praktisk tolking av linje 2, og forklar kva programmet skriv 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 ein modell der folketalet startar på 4500 og aukar med 3,5 % per år, og xx er talet på år etter 2025. Programmet skriv ut at modellen gir om lag 6348 innbyggjarar i 2035.

✏️Døme 4: Kva kan programmet brukast 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",
          "rettvinkla")

Vilkåret sjekkar setninga til Pytagoras med kvar av dei tre sidene som den lengste.

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

Trekanten er rettvinkla

Svar: Programmet kan brukast til å sjekke om tre sidelengder gir ein rettvinkla trekant. Sidene 6, 10 og 8 gir ein rettvinkla trekant.

📝Oppgave 4

Kva skriv programmet ut? Kva kan programmet brukast til?

a = 9
b = 12
c = 15
if a**2 + b**2 == c**2:
    print("Ja")
else:
    print("Nei")

while-løkker: kor lenge til …?

Eit program med while svarer nesten alltid på spørsmålet «kor lenge tek det før …?». Slik les du det:

- Startverdiane fortel situasjonen (startbeløp, vekstfaktor, innskot, uttak).
- Vilkåret etter while fortel kva som skal nåast: løkka går så lenge målet ikkje er nådd.
- Teljaren (ofte år) aukar med 1 for kvar runde.
- Når løkka stoppar, er målet nådd for første gong. Utskrifta viser teljaren og verdien då.

✏️Døme 5: Kva ønskjer Ada å finne ut?

Ada har laga programmet nedanfor.

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) Kva ønskjer Ada å finne ut?

b) Kva fortel verdiane som blir skrivne ut?

a) Kvar runde er eitt år: Ada set inn 15 000 kr, og så får heile beløpet 3 % rente. Løkka går så lenge beløpet er under 200 000 kr.

Svar: Ada vil finne ut kor mange år ho må spare 15 000 kr i året med 3 % rente før ho 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 gong minst 200 000 kr. Då har ho om lag 219 267 kr.

✏️Døme 6: Når er utsleppet halvert?

Ei verksemd slepper ut 300 tonn CO₂ i 2025. Kva ønskjer verksemda å finne ut med programmet, og kva fortel utskrifta?

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 tyder at utsleppet 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: Verksemda vil finne ut når utsleppet er halvert dersom det går ned med 12 % kvart år. I 2031 er utsleppet for første gong under 150 tonn, nemleg om lag 139,3 tonn.

📝Oppgave 5

Lag ein tabell over x og n for kvar runde i løkka, og finn kva programmet skriv ut.

x = 100
n = 0
while x > 50:
    x = x * 0.8
    n = n + 1
print(n, x)

📝Oppgave 6

Programmet handlar om verdien av ein bil.

bil = 350000
år = 0
while bil > 175000:
    bil = bil * 0.85
    år = år + 1
print(år)
print(bil)

Kva ønskjer programmereren å finne ut, og kva fortel verdiane som blir skrivne ut?

📝Oppgave 7

Johann har arva pengar og har laga programmet nedanfor.

konto = 800000
uttak = 60000
vf = 1.04
år = 0
while konto >= 60000:
    konto = konto * vf - uttak
    år = år + 1
print(år)
print(konto)

Kva fortel programmet om planen til Johann, og kva fortel verdiane som blir skrivne ut?

📝Oppgave 8

Lista inneheld temperaturen klokka 12 kvar dag i ei veke.

temperaturar = [18, 22, 25, 19,
                21, 17, 24]
tal = 0
for t in temperaturar:
    if t > 20:
        tal = tal + 1
print(tal)
print(tal / len(temperaturar))

Kva fortel dei to verdiane som blir skrivne ut?

📝Oppgave 9

Sara har lese at ei verksemd slepper ut 120 tonn CO₂ i 2025 og vil redusere utsleppet 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 ei praktisk tolking av uttrykket i linje 2.

b

Kva fortel verdien som blir skriven ut?

Oppgåver i eksamensform

📝Oppgave 10

Programmet nedanfor er gitt.

L = [12, 5, 9, 15, 7, 10, 8]
L.sort()
print(L)
print(L[3])
print(sum(L) / len(L))

Kva skriv programmet ut? Forklar kvifor L[3] er medianen.

📝Oppgave 11

Eit lån på 50 000 kr har 5 % rente per år og blir betalt 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 kva linjene i løkka reknar ut.

b

Kva skriv programmet ut, og kor lang tid tek det å betale ned lånet?

c

Restlånet blir negativt det siste året. Kva tyder det, og kor mykje må betalast det siste året?

Løs oppgaven
📝Oppgave 12

Ola og Eva sparer 10 000 kr i året i 10 år med 4 % rente. Dei har laga kvart 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

Kva skriv programma ut?

b

Forklar skilnaden.

Oppsummering

- Les programmet ovanfrå og ned, og følg verdiane i ein tabell.
- while tyder «så lenge»: programmet finn når eit mål blir nådd for første gong.
- for … in range(n) gjentek nn gonger.
- Forklar alltid resultatet i samanhengen: kva tyder talet, og kva for ei eining 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.