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.
Å 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
| Python | Tyding |
|---|---|
x = 5 | variabelen 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 |
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.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))å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 skriv ut beløpet etter 1, 2 og 3 år: 5150 kr, 5304,50 kr og 5463,64 kr.Kva skriv programmet ut, og kva reknar programmet ut?
a = 1200
b = a * 1.25
print(b)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.
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))Sortert: 3, 4, 6, 7, 9. Det midtarste talet 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 variasjonsbreidda er 6.
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 .
Ein if-test køyrer linjene under berre dersom vilkåret er sant. == tyder «er lik», og or tyder «eller».
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))6347.694422795044Svar: Linje 2 er ein modell der folketalet startar på 4500 og aukar med 3,5 % per år, og er talet på år etter 2025. Programmet skriv ut at modellen gir om lag 6348 innbyggjarar 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",
"rettvinkla")Vilkåret sjekkar setninga til Pytagoras med kvar av dei tre sidene som den lengste.
Trekanten er rettvinklaSvar: Programmet kan brukast til å sjekke om tre sidelengder gir ein rettvinkla trekant. Sidene 6, 10 og 8 gir ein rettvinkla trekant.
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å.
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.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 gong minst 200 000 kr. Då har ho om lag 219 267 kr.
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 tonn. Vekstfaktoren 0,88 tyder at utsleppet går ned med 12 % per år.2031
139.3212260352og
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.
Sjå nøye etter om innskotet blir lagt til før eller etter at renta blir rekna ut. I døme 5 får innskotet rente same år som det blir sett inn. Byter vi om dei to linjene, blir sluttbeløpet mindre.
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)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?
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?
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?
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)Gi ei praktisk tolking av uttrykket i linje 2.
Kva fortel verdien som blir skriven ut?
Oppgåver i eksamensform
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.
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))Forklar kva linjene i løkka reknar ut.
Kva skriv programmet ut, og kor lang tid tek det å betale ned lånet?
Restlånet blir negativt det siste året. Kva tyder det, og kor mykje må betalast det siste året?
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))Kva skriv programma ut?
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 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.