Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
  1. Hjem
  2. Høyskole
  3. UiO
  4. IN1000
  5. Studieguide
IN1000 · UiO

Studieguide for IN1000 Introduksjon til objektorientert programmering

Komplett pensumoversikt for introduksjon til objektorientert programmering ved UiO — med forklaringer, sentrale begreper, eksamenstips og vanlige fallgruver. Eksamensoptimalisert basert på tidligere eksamener.

Innhold

  • Introduksjon
  • Variabler og datatyper
  • Kontrollstrukturer
  • Funksjoner
  • Lister og ordbøker
  • Filhåndtering
  • Klasser og objekter
  • Objektorientert design
  • Kodeforståelse og feilsøking
  • Eksamensstrategi
  • Formelark

Introduksjon

IN1000 Introduksjon til objektorientert programmering er det første programmeringsemnet ved Institutt for informatikk, UiO. Undervisningen foregår i Python. Eksamen er en 4-timers skriftlig digital eksamen i Inspera på 100 poeng. Tillatte hjelpemidler er «alle trykte og skrevne, ingen elektroniske».

Denne studieguiden er bygd på 11 høstsett med full oppgavetekst: H2014 og H2015 (INF1000-sett tilpasset IN1000), H2018–H2025 og ny/utsatt eksamen januar 2026. I tillegg bygger den på institusjonens løsningsforslag og sensorveiledninger for 2021–2026, tre delvis publiserte kontinuasjonseksamener og prøveeksamenene. Tallene i guiden er talt deloppgave for deloppgave i disse settene.

Slik ser eksamen ut (H2022–januar 2026)

  • Del 1 (8–10 p) og Del 2 (7–9 p): «Hva skrives ut?» Korte kodebiter med variabler, if/elif, løkker, ordbøker, funksjoner og klasser. I H2025 og konte januar 2026 var alle 18 deloppgavene av denne typen.
  • Del 3 (23–27 p): «Skriv en funksjon …» 3–5 funksjoner med eksempelkall. De bygger på hverandre, og du skal kalle funksjonen fra forrige deloppgave.
  • Oppgave 4 (47–50 p): et system av klasser. 3–5 klasser som samarbeider, med ordbok av objekter, fillesing og delegering. Denne oppgaven er halve karakteren.
  • Del 5 (9–12 p): 2 algoritmeoppgaver på lister, nøstede lister og ordbøker.

Hva som ikke testes

I de 51 eksamens-PDF-ene og de 35 offisielle løsningsforslagene i Python er det 0 treff på arv og super(), try/except, list comprehension, lambda, with open, sorted, enumerate, zip og tuple. Alt løses med klasser, lister, ordbøker, vanlige løkker og open/close. Arv og unntak kommer i IN1010.

Hvordan guiden er bygd opp

Hver seksjon starter med «Slik testes dette på eksamen» og tall for hvor ofte hver oppgavetype har kommet. Deretter følger gjennomregnede eksempler i eksamensform, med nummererte steg og svar til slutt. Kodeeksemplene er skrevet for guiden og kjørt. Instansvariablene har _, slik sensorveiledningene krever.

Variabler og datatyper

Eksamensrelevant

Typen bestemmer hva + og * gjør, / gir alltid float, strenger kan indekseres men ikke endres, og tilordning til en parameter er lokal. Typekonvertering er med i 9 av 11 høstsett og i alle de 5 nyeste.

Oversikt

En variabel i Python er et navn som peker på en verdi, og typen følger verdien: int, float, str eller bool. Temaet gir sjelden egne poeng, men det avgjør svaret i mange av småoppgavene i Del 1 og 2. Ett tegn feil type, og hele deloppgaven er tapt.

Slik testes dette på eksamen. Typekonvertering finnes i 9 av 11 høstsett (H2014–K2026) og i 5 av de 5 nyeste (H2022–K2026). Del 1–2 i H2025 og K2026 var 9 av 9 «Hva skrives ut?» i begge settene med tall eller tekst som svar, og typekonvertering var med i begge. Strengbehandling står i 6 av 11 høstsett, boolske uttrykk i 7 av 11 (4 av de 5 nyeste), og en funksjon som gir parameteren en ny verdi (med tall eller tekst som argument), i 3 av 11. Som hovedtema gir temaet 2,9 % av poengene i snitt, men det trengs i 11 av 11 sett.

Typen bestemmer hva + og * gjør

Skriv opp typen til hver operand før du regner. Da er reglene enkle: tall + tall adderer, streng + streng setter sammen, og streng * heltall gjentar strengen.

print("7" + "5")           # 75
print(7 + 5)               # 12
print(int("7") + 5)        # 12
print(str(7) + "5")        # 75
print(int("7" + "5") + 1)  # 76
print("7" * 3)             # 777
print(7 * 3)               # 21

Blander du streng og tall med +, stopper programmet: "7" + 5 gir TypeError: can only concatenate str (not "int") to str. På en sporingsoppgave er svaret da en feilmelding, ikke et tall.

input og fil gir alltid tekst

input() returnerer en streng, og det samme gjør hvert felt du får fra linje.split(). Skriver brukeren 4, gir koden under først strengen "44". Først etter int() blir det tallet 8. Sensorveiledningen for vår 2025 (oppgave 2a) ba sensor «se spesielt etter casting til int».

svar = input("Antall: ")
print(svar + svar)              # 44
print(int(svar) + int(svar))    # 8
print(float("2.5") * 2)         # 5.0

int("2.5") gir ValueError. Tekst med desimalpunkt går gjennom float().

Tre divisjoner: /, // og %

print(14 / 7)    # 2.0   / gir alltid float
print(14 // 4)   # 3     heltallsdivisjon
print(14 % 4)    # 2     resten
print(14 / 4)    # 3.5

Når svaret skal skrives «slik det skrives ut», er 2 og 2.0 to ulike svar. % bruker du til å teste delelighet (t % 2 == 0) og til å dele opp sekunder i minutter og sekunder.

Eksempel 1: Hva skrives ut? (tekst fra split)

linje = "7;12;5"
deler = linje.split(";")
a = deler[0] * 2
b = int(deler[1]) // int(deler[2])
c = len(deler[1]) + b
print(a, b, c)
  1. split(";") gir en liste med tre strenger: ["7", "12", "5"]. Ingen av dem er tall ennå.
  2. deler[0] * 2 er streng ganger heltall. Strengen gjentas, så a blir "77", ikke 14.
  3. int("12") // int("5") er heltallsdivisjon: 5 går 2 hele ganger i 12, så b = 2.
  4. len(deler[1]) teller tegnene i strengen "12", altså 2. Da blir c = 2 + 2 = 4.
  5. print med komma setter ett mellomrom mellom verdiene, og strengen skrives uten anførselstegn.
UttrykkVerdiType
deler[0]"7"str
a"77"str
b2int
len(deler[1])2int
c4int

Svar: 77 2 4

Eksempel 2: Hva skrives ut?

sek = 250
m = sek // 60
s = sek % 60
snitt = sek / 5
print(m, s, snitt)
  1. 250 // 60: 60 går 4 hele ganger i 250, så m = 4.
  2. 250 % 60: 250 − 4 · 60 = 10, så s = 10.
  3. 250 / 5 går opp, men / gir alltid float: snitt = 50.0.
  4. print med komma setter ett mellomrom mellom verdiene.

Svar: 4 10 50.0

Strenger: indeks, len og ny streng

Første tegn har indeks 0, og siste har indeks len(s) - 1 (eller -1). En streng kan ikke endres: by[0] = "b" gir TypeError: 'str' object does not support item assignment. Skal du lage en endret tekst, bygger du en ny streng i en løkke:

by = "Bergen"
print(by[0], by[-1], len(by))   # B n 6
baklengs = ""
for tegn in by:
    baklengs = tegn + baklengs
print(baklengs)                  # negreB

Rekkefølgen i tegn + baklengs avgjør retningen. Med baklengs + tegn får du en kopi av ordet.

En boolsk variabel husker verdien

stor = grense > 5 regner ut sammenlikningen én gang og lagrer True eller False. Variabelen følger ikke med når grense endres senere:

grense = 7
stor = grense > 5
grense = 3
if stor and grense < 5:
    grense = grense * 10
print(stor, grense)      # True 30

Tilordning til en parameter er lokal

En parameter er et lokalt navn som peker på det samme objektet som argumentet. Gir funksjonen parameteren en ny verdi med =, flyttes bare det lokale navnet. Variabelen hos den som kaller, peker fortsatt på det gamle objektet. Det gjelder alle typer, også lister. Forskjellen er at en liste kan endres gjennom parameteren, for eksempel med append eller liste[i] = …, og den endringen ser også den som kaller (se Lister og ordbøker). Tall og strenger kan ikke endres på den måten, så for dem er utfallet alltid at kalleren ser samme verdi som før.

Eksempel 3: Hva skrives ut?

def forkort(tekst, n):
    n = n + 1
    ny = ""
    i = 0
    while i < len(tekst):
        ny = ny + tekst[i]
        i = i + n
    return ny

n = 2
kode = forkort("bibliotek", n)
print(kode, n)
  1. Inne i funksjonen blir den lokale n 3. Løkka tar derfor hvert tredje tegn, fra indeks 0.
  2. len("bibliotek") er 9, så indeksene som leses, er 0, 3 og 6. Ved i = 9 stopper løkka.
  3. n utenfor funksjonen er fortsatt 2. Tilordningen n = n + 1 inne i funksjonen flyttet bare det lokale navnet n.
itekst[i]ny
0b"b"
3l"bl"
6t"blt"
99 < 9 er usant, løkka stopper

Svar: blt 2

Utskrift uten f-strenger

Løsningsforslagene bruker print("Sum:", s) eller "Sum: " + str(s). Med komma legger print inn mellomrommet selv og tåler tall. Med + må du skrive mellomrommet og bruke str() selv. F-strenger og formatering med :.2f trengs ikke på eksamen.

Nøkkelformler

  • •int("7") + 5 = 12, men "7" + "5" = "75"
  • •"7" * 3 = "777" (streng ganger heltall gjentar)
  • •14 / 7 = 2.0, 14 // 4 = 3, 14 % 4 = 2
  • •s[0] er første tegn, s[len(s) - 1] og s[-1] er siste
  • •input() og split() gir alltid str

Vanlige feil

  • ⚠️Å svare 2 der koden skriver ut 2.0: / gir alltid float, også når divisjonen går opp.
  • ⚠️Å glemme int() på input eller på felt fra fil, slik at "4" + "4" blir "44".
  • ⚠️Å tro at en boolsk variabel regnes ut på nytt når variabelen i sammenlikningen endres.
  • ⚠️Å tro at en funksjon som gir parameteren ny verdi, endrer variabelen til den som kaller.
  • ⚠️Å prøve å endre ett tegn i en streng med s[i] = … i stedet for å bygge en ny streng.

Eksamenstips

  • 💡Skriv typen ved siden av hver variabel i sporingen (str, int, float, bool) før du regner.
  • 💡Del 1 og 2 i H2025 og K2026 hadde bare «Hva skrives ut?». Svar nøyaktig det som skrives ut, og følg instruksen om anførselstegn.
  • 💡print med komma setter inn ett mellomrom. Med + må du skrive mellomrommet og str() selv.
  • 💡Står det en sammenlikning på høyre side av =, er variabelen True eller False fra og med den linja.
  • 💡Tilordning til en parameter inne i en funksjon endrer aldri variabelen til den som kaller. Bare endring av en liste (append, liste[i] = …) synes utenfor.

Laster...

Laster…
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert