Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

05.01: Lesing fra fil

Filnavn: les_fil.py og navn.txt

a) Opprett en tekstfil kalt navn.txt, som du legger i samme mappe som les_fil.py. Tekstfilen skal inneholde navnene under:

Anne
Bjarne
Carina
David
Elise
Frode

b) Bruk open() for å åpne navn.txt i pythonprogrammet.

c) Opprett en tom liste med navn navn_liste

d) Skriv en løkke som går gjennom filen, linje for linje, og legger linjene inn i listen.

NB: Husk å lukke filen når du er ferdig

e) Skriv ut listen til terminal.

b)

fil = open("navn.txt", "r")

c)

navn_liste = []

d)

for linje in fil:
    navn_liste.append(linje)
fil.close()

e)

print(navn_liste)

05.05 Enkle tabulære filer

I denne øvelsen skal du skrive flere funksjoner som kan lese tabulære filer, dvs. som har data organisert i rader og kolonner, og lagre innholdet i forskjellige samlinger.

Del 1

Filnavn: bil.txt, bil.py

a) Opprett en tekstfil kalt bil.txt, som inneholder følgende tekst og legger i samme mappe som bil.py:

brand:Ford
model:Mustang
year:1964

b) Skriv en funksjon, les_bil(filnavn), i bil.py som kan lese bil.txt. Funksjonen skal...
- ... lage en tom ordbok, resultatet
- ... gå gjennom filen og dele hver linje i to kolonner etter ":" (kolon).
Sørg også for at linjeskift er fjernet.
- ... for hver linje lagre den første kolonnen som ordboknøklen, og den andre kolonnen som ordbokverdien.
- ... returnere ordboken

c) Skriv ut resultatet

Del 2

Filnavn: song_contest.txt, song_contest.py

a) Opprett en tekstfil song_contest.txt som inneholder følgende teskt:

2016 Ukrania
2017 Portugal
2018 Israel
2019 Nederland
2020 avlyst
2021 Italia

b) Skriv en funksjon, les_song_contest(filnavn) i song_contest.py som kan lese song_contest.txt. Funksjonen skal...
- ... opprette to lister, årene og landene
- ... gå gjennom filen og dele hver linje i to kolonner etter mellomrom.
Sørg også for at linjeskift er fjernet.
- ... lagre den første verdien i listen årene og den andre verdien i listen landene.
- ... opprette en ordbok song_contest som inneholder nøkkelen år med listen av årene som verdi og nøkkelen land med listen av landene som verdi.
- ... returnere ordboken

c) Skriv ut resultatet

Del 3

Filnavn: poeng.txt, poeng.py

a) Opprett en tekstfil poeng.txt som inneholder følgende teskt:

Mari:3,5,3,6
Erik:2,4,5,3
Silje:3,5,4,6
Ola:2,5,4,5

b) Skriv en funksjon, les_poeng(filnavn) i poeng.py som kan lese poeng.txt. Funksjonen skal...
- ... opprette en tom ordbok poeng
- ... gå gjennom filen og dele hver linje i to kolonner etter ":" (kolon).
Sørg også for at linjeskift er fjernet.
- ... dele opp strengen av antall poeng på "," (komma). Dette resulterer i en liste.
- ... sette dataen i ordboken poeng der navn er nøkkelen og listen av poeng til personen er tilhørende verdi.
- ... returnere ordboken

c) Skriv ut resultatet

Utfordring: Skriv om funksjonen i Del 3 slik at verdiene i ordboken poeng er et heltall som er summen av alle tall i listen i stedet for listen selv.

Del 1

def les_bil(filnavn):
    # oppretter ordboken
    resultatet = {}

    for linje in open(filnavn):
        linje = linje.strip()   
        kolonner = linje.split(":")    
        noekkel = kolonner[0]
        verdi = kolonner[1]

        # sette data i ordboken
        resultatet[noekkel] = verdi

    return resultatet

print(les_bil("bil.txt"))

Del 2

def les_song_contest(filnavn):
    årene = []
    landene = []

    for linje in open(filnavn):
        linje = linje.strip()
        kolonner = linje.split()
        årene.append(kolonner[0])
        landene.append(kolonner[1])

    song_contest = {"år": årene, "land": landene}
    return song_contest

print(les_song_contest("song_contest.txt"))

Alternativ løsning:

def les_song_contest(filnavn):
    årene = []
    landene = []

    for linje in open(filnavn):
        linje = linje.strip()
        år, land = linje.split()
        årene.append(år)
        landene.append(land)

    song_contest = {"år": årene, "land": landene}
    return song_contest

print(les_song_contest("song_contest.txt"))

Del 3

def les_poeng(filnavn):
    resultatet = {}

    for linje in open(filnavn):
        linje = linje.strip()
        kolonner = linje.split(":")
        navn = kolonner[0]
        poeng = kolonner[1].split(",")

        resultatet[navn] = poeng

    return resultatet

print(les_poeng("poeng.txt"))

c) - utfordring

def les_poeng(filnavn):
    resultatet = {}

    for linje in open(filnavn):
        linje = linje.strip()
        kolonner = linje.split(":")
        navn = kolonner[0]
        poeng = kolonner[1].split(",")

        total = 0
        for p in poeng:    # må kastes om til et heltall
            total += int(p)

        resultatet[navn] = total

    return resultatet

print(les_poeng("poeng.txt"))

05.06 Skriv til filer

a) Lag en prosedyre skriv_dna() som skriver ut følgende linjer:

O---o
 O-o
  O
 o-O
o---O
Hint

Du kan bruke print() flere ganger, eller kalle print() bare 1 gang og bruke linjeskift tegn "\n"


b) Endre prosedyren skriv_dna() slik at den tar inn et filnavn som parameter og skriver strengen til filen i stedet for å skrive den ut til terminalen. Husk å lukke filen.

c) Kall prosedyren skriv_dna() tre ganger med samme filnavn som argumentet. Hvordan ser den resulterende filen ut? Ser den ut som forventet?

d) Bonus: Les documentasjonen om mode-argumentet her. Endre prosedyren skriv_dna() slik at den bruker 'append mode' i stedet for 'write mode' for å løse problemet fra c), og kjør programmet igjen.

a)

def skriv_dna():
    print("O---o")
    print(" O-o")
    print("  O")
    print(" o-O")
    print("o---O")

eller

def skriv_dna():
    print("O---o\n O-o\n  O\n o-O\no---O")

b)

def skriv_dna(filnavn):
    fil = open(filnavn, "w")
    fil.write("O---o\n")
    fil.write(" O-o \n")
    fil.write("  O  \n")
    fil.write(" o-O \n")
    fil.write("o---O\n")
    fil.close()

eller

def skriv_dna(filnavn):
    fil = open(filnavn, "w")
    fil.write("O---o\n O-o\n  O\n o-O\no---O\n")
    fil.close()

c) Den resulterende filen inneholder stringen én gang, ikke tre ganger selv om prosedyren er kalt 3 ganger.

d) Bruk mode "a" (append) i stedet for "w" (write)

def skriv_dna(filnavn):
    fil = open(filnavn, "a")
    fil.write("O---o\n O-o\n  O\n o-O\no---O\n")
    fil.close()

skriv_dna("dna_fil.txt")
skriv_dna("dna_fil.txt")
skriv_dna("dna_fil.txt")

05.07 Maks ord per linje

I denne oppgave skal du lage et program som tar inn en tekst og skriver den ut til en fil. I utdatafilen er det et maksimalt antall ord som er tillatt per linje.

a) Lag en prosedyre format_text() som tar inn en string tekst, en string filnavn og et heltall maks_ord.
- tekst er det som skrives til fil
- filnavn er navnet på utdatafilen
- maks_ord er maksimalt antall ord per linje

Prosedyren skal...
- ... dele stringen tekst i ord
- ... skrive hvert ord til filen
- ... passe på at ikke flere ord enn maks_ord skrives på hver linje

Du kan bruke en tellervariabel for å holde oversikt over hvor mange ord du har skrevet til filen. Hver gang maks_ord er nådd for linjen, skriv en linjeskrift-karater ("\n") til filen.

b) Test programmet med følgende verdier og sjekk at filen "test.out" opprettes og inneholder det som forventes:

  • Teksten: "I denne oppgave skal du lage et program som tar inn en tekst og skriver den ut til en fil. I utdatafilen er det maksimalt antall ord som er tillatt per linje."
  • Filnavn: "test.out"
  • Maks antall ord per linje: 5

Forventet resultat:

I denne oppgave skal du 
lage et program som tar
inn en tekst og skriver
den ut til en fil.
I utdatafilen er det maksimalt
antall ord som er tillatt 
per linje.

Husk å åpne og lukke filen!

def format_text(tekst, filnavn, maks_ord):
    ordene = tekst.split()
    fil = open(filnavn, "w")
    teller = 0

    for min_ord in ordene:
        teller += 1
        fil.write(min_ord)
        fil.write(" ")    # inkluder mellomrom mellom ordene.

        # kan også bruke "if teller % maks_ord == 0"
        if teller == maks_ord:
            teller = 0
            fil.write("\n")

    fil.close()

tekst = "I denne oppgave skal du lage et program som tar inn en tekst og skriver den ut til en fil. I utdatafilen er det maksimalt antall ord som er tillatt per linje."

format_text(tekst, "test.out", 5)

05.08 Linjefilter

I denne oppgaven skal du skrive en prosedyre som skriver ut alle linjene i en gitt tekstfil som ikke inneholder 'NA' til en ny fil.

I tabulær filer brukes verdien 'NA' (“not available”) for å betegne manglende informasjon. Vurder følgende tabulær fil med NA-verdier:

Name,Sex,Age,Height(in),Weight(lbs)
Alex,M,41,74,NA
Bert,M,NA,68,166
Carl,M,32,70,155
Dave,M,NA,72,167
Elly,F,30,66,124
Fran,F,33,NA,115
Gwen,F,26,64,121
Hank,M,30,71,158
Ivan,M,53,NA,175
Jake,M,32,69,143
Kate,F,47,69,139
Luke,M,34,72,163
Myra,F,NA,62,98
Neil,M,36,75,160
Omar,M,38,70,145
Page,F,31,67,NA
Quin,M,29,71,176
Ruth,F,28,65,131

Lagre teksten over i en .csv-fil kalt input_med_na.csv

a) Skriv prosedyren fil_na_filter() som tar inn to strenger som parameter: et inputfilnavn og et outputfilnavn.

b) Åpne filene og lagre dem i variablene input_fil og output_fil

c) For hver linje i input_fil skal den skrives til output_fil hvis linjen ikke inneholder verdien 'NA'.

Hint

 Bruk in


d) Kall prosedyren med "input_med_na.csv" som inputfil og "output_uten_na.csv" som outputfil. Inspiser at outputfilen opprettes og inneholder det som forventes.

def fil_na_filter(input_filnavn, output_filnavn):
    input_fil = open(input_filnavn, "r")
    output_fil = open(output_filnavn, "w")

    for linje in input_fil:
        if "NA" not in linje:
            output_fil.write(linje)

    # Har du husket å lukke filene?
    input_fil.close()
    output_fil.close()

fil_na_filter("input_med_na.csv", "output_uten_na.csv")

Forventet resultat:

Name,Sex,Age,Height(in),Weight(lbs)
Carl,M,32,70,155
Elly,F,30,66,124
Gwen,F,26,64,121
Hank,M,30,71,158
Jake,M,32,69,143
Kate,F,47,69,139
Luke,M,34,72,163
Neil,M,36,75,160
Omar,M,38,70,145
Quin,M,29,71,176
Ruth,F,28,65,131

05.09 Skriv ut første/siste antall linjer

a) Skriv en prosedyre opprett_filen()som oppretter en fil test.in og skriver 10 linjer til filen. Linjene kan inneholde hva som helst men de bør ikke være helt like.

b) Skriv en prosedyre skriv_ut_foerste_linjer() som tar inn to parametre: en streng filnavn og et heltall antall_linjer. Prosedyren skal lese de første antall_linjer linjene i filen og skrive dem ut til terminalen.

Hint

For å ikke skrive ut to linjeskift, bruk strip() eller print(sep="") for å fjerne linjeskift.


c) Skriv en ny prosedyre skriv_ut_siste_linjer() som har de samme parametre som prosedyren i b), men som skriver ut de siste antall_linjer linjene til terminalen

Hint

Du må først lese inn hele filen.


d) Kall prosedyrene for å opprette filen "test.in" og skrive ut de første og siste 5 linjer. Skriv gjerne en tom linje mellom prosedyrekallene for å dele opp resultatene

a)

def opprett_filen():
    fil = open("test.in", "w")

    for i in range(10):
        linje = "linje " + str(i + 1)
        fil.write(linje)
        fil.write("\n")

    fil.close()

b)

def skriv_ut_foerste_linjer(filnavn, antall_linjer):
    fil = open(filnavn, "r")
    idx = 0

    for linje in fil:
        if idx < antall_linjer:
            print(linje.strip())
        idx += 1

    fil.close()

c)

def skriv_ut_siste_linjer(filnavn, antall_linjer):
    fil = open(filnavn, "r")
    linjene = []

    for linje in fil:
        linjene.append(linje.strip())

    fil.close()

    indeks = len(linjene) - antall_linjer
    for linje in linjene[indeks:]:
        print(linje)

d)

opprett_filen()
skriv_ut_foerste_linjer("test.in", 5)
print()
skriv_ut_siste_linjer("test.in", 5)

05.10: Sorter hund og person

Navn: sorter_navnefil.py, navn.txt

Teksten under er en liste over navn til personer og hunder. Linjene som starter med P inneholder et navn til en person, mens linjene som starter med H er for en hund. Kopier over listen til en fil du kaller navn.txt.

P Martin
H Trofast
H Tapper
H Rex
P Simen
P Elin
H Tara
P Svein 

Skriv et program som leser inn navn.txt og sorterer navnene i to lister: personer og hunder. Til slutt skal listene skrives ut.

Det finnes mange måter å løse denne oppgaven på.

Løsning med split():
NB: Merk at dette ikke vil fungere hvis et navn inneholder et mellomrom

personer = []
hunder = []

fil = open("navn.txt", "r")
for linje in fil:
    kolonner = linje.split()
    if kolonner[0] == "H":
        hunder.append(kolonner[1])
    elif kolonner[0] == "P":
        personer.append(kolonner[1])
    else:
        print("Feil i linjeformat:\n", linje)
fil.close()

print("Personer")
print(personer)
print("\nHunder")
print(hunder)

Løsning med slicing:
Husk at du kan bruke slicing til å ta utdrag fra en tekststreng. F.eks:

navn = "Ole Petter!"
print(navn[4:-1])

gir utskriften

Petter

Tallet 4 indikerer startposisjonen i strengen og -1 indikerer den nest-siste posisjonen (her er det indeks 9).

personer = []
hunder = []

fil = open("navn.txt", "r")
for linje in fil : 
    if linje[0] == "H":
        hunder.append(linje[2:-1])
    elif linje[0] == "P":
        personer.append(linje[2:-1])
    else:
        print("Feil i linjeformat:\n", linje)
fil.close()

print("Personer")
print(personer)
print("\nHunder")
print(hunder)

05.11 En tabulær fil med karakterer

Filnavn: karakter.csv, sorter_etter_karakter.py

I denne øvelsen skal du lage et program som leser en fil med studentnavn og sine karakterer. Filen heter karakter.csv og er en tabulær fil med to kolonner som skal se slik ut:

Anna,C
Joakim,E
Louise,A
Lasse,F
Gry,B
Odd,D
Sven,D
Kaja,F
Ola,F
Ine,E
Vegard,A
Paal,C

a) Lag en funksjon sorter_etter_karakter() som tar inn parameter filnavn og leser hver linje i filen. Funksjonen skal:

  • opprette en ordbok for å lagre informasjon over studentene og karakterene
  • hente navn og karakter fra hver linje (uten linjeskrift-karakter) og lagre dem i ordbøken som bruker karakteren som nøkkelverdi og har en liste med navn som innholdsverdi.
    • Hver gang du finner en karakter som ikke er en nøkkel i ordboken ennå, kan du legge det til. Hvis den allerede er i ordboken, legg til navnet i listen.
  • returnere ordboken som ser slik ut:
{'C': ['Anna', 'Paal'], 'E': ['Joakim', 'Ine'], 'A': ['Louise', 'Vegard'], 'F': ['Lasse', 'Kaja', 'Ola'], 'B': ['Gry'], 'D': ['Odd', 'Sven']}

b) Lag en prosedyre skriv_ut_sortert() som tar inn ordbøken laget av sorter_etter_karakter() og skriver ut denne ordbøken sortert:

A :  ['Louise', 'Vegard']
B :  ['Gry']
C :  ['Anna', 'Paal']
D :  ['Odd', 'Sven']
E :  ['Joakim', 'Ine']
F :  ['Lasse', 'Kaja', 'Ola']

c) Lag en funksjon hent_vanligste_karakter() som tar inn ordbøken og returnerer karakteren som de fleste studenter fikk. (Hint: bruk funksjonen len() for å se hvor mange studenter fikk karakteren).

d) Kall hver funksjon og prosedyre for å sjekke at de fungerer.

a)

def sorter_etter_karakter(filnavn):
    karakter_ordbok = {}
    fil = open(filnavn, "r")

    for linje in fil:
        navn, karakter = linje.strip().split(",")
        if karakter in karakter_ordbok:
            karakter_ordbok[karakter].append(navn)
        else:
            karakter_ordbok[karakter] = [navn]

    # Husk å lukke filen
    fil.close()

    return karakter_ordbok

b)

def skriv_ut_sortert(karakter_ordbok):
    for karakter in sorted(karakter_ordbok.keys()):
        print(karakter, ": ", karakter_ordbok[karakter])

c)

def hent_vanligste_karakter(karakter_ordbok):
    vanligste_karakter = ""
    antall_studenter = 0

    for karakter in sorted(karakter_ordbok.keys()):
        if len(karakter_ordbok[karakter]) > antall_studenter:
            antall_studenter = len(karakter_ordbok[karakter])
            vanligste_karakter = karakter

    return vanligste_karakter

d) Husk å lagre karakter.csv i samme mappe som sorter_etter_karakter.py

karakter_ordbok = sorter_etter_karakter("karakter.csv")
skriv_ut_sortert(karakter_ordbok)
print("Vanligste karakter:", hent_vanligste_karakter(karakter_ordbok))

05.13 Maks tegn per linje

Filnavn: maks_tegn_per_linje.py

Dette er en fortsettelse av oppgave 05.07. Hvis du ikke har løst oppgave 05.07 ennå, kan du prøve det først.

I denne oppgaven skal du skrive en prosedyre som tar inn en tekst (string), et utdatafilnavn (string) og et maksimalt antall tegn (heltall) per linje. Prosedyren skal skrive teksten til utdatafilen slik at hver linje ikke inneholder mer enn det maksimale antallet tegn. I tillegg skal prosedyren passe på at ordene ikke deles på flere linjer, dvs. at et ord flyttes til en ny linje i stedet for å deles over to linjer. Bruk koden du skrev for oppgave 05.07 som utgangspunkt.

Hint

Denne gangen bør du ikke holde oversikt over antall skrevne ord, men antall skrevne tegn for en linje.


Eksempel:

  • Teksten: "I denne oppgave skal du lage et program som tar inn en tekst og skriver den ut til en fil. I utdatafilen er det maksimalt antall ord som er tillatt per linje."
  • Filnavn: "test.out"
  • Maks antall tegn per linje: 20

Forventet resultat: test.out

I denne oppgave skal 
du lage et program 
som tar inn en tekst 
og skriver den ut til 
en fil. I utdatafilen 
er det maksimalt 
antall ord som er 
tillatt per setning. 
def format_text(tekst, filnavn, maks_tegn):
    ordene = tekst.split()
    fil = open(filnavn, "w")
    teller = 0

    for min_ord in ordene:
        if teller + len(min_ord) > maks_tegn:
            # Må starte ny linje
            fil.write("\n")
            teller = len(min_ord)
        else:
            # Husk at mellomrom også er et tegn
            teller += len(min_ord) + 1

        fil.write(min_ord)
        fil.write(" ")

    # Husk å lukke filen!
    fil.close()

tekst = "I denne oppgave skal du lage et program som tar inn en tekst og skriver den ut til en fil. I utdatafilen er det maksimalt antall ord som er tillatt per setning."

format_text(tekst, "test.out", 20)

05.14 Omvendt rekkefølge

Filnavn: input.txt, omvendt_fil.py

Lagre følgende dikt i en fil som heter input.txt:

Once upon a time
Alice left me in the wonderland
I shall never forget
Dreams can come true
There is no way that
Fairy tales are deceiving and disappointing
I am sure that
Reality
Is only a hiding place from
Fantasy
‘Humans have a chance to fly’
I will shout to the world and object to the following line
Peter pan is a liar
In fact
The world spins around love instead of money
It is not true that
Cinderella loves the prince just for his money
I would rather believe
There is true love on earth
And I will never believe that
There is no happy ending in real life

Skriv en funksjon omvendt_fil() som skriver linjene til en fil i omvendt rekkefølge til en annen fil. Funksjonen skal ta inn to parametre: input_filnavn og output_filnavn. Pass på at de to filnavnene er ikke like.

Hint

Det er mange forskjellige måter å løse denne øvelsen på, men det er nyttig å lagre fillinjene i en liste.


def omvendt_fil(input_filnavn, output_filnavn):
    linjene = []
    input_fil = open(input_filnavn, "r")
    for linje in input_fil:
        linjene.append(linje)

    # Husk å lukke filen!
    input_fil.close()

    omvendte_linjene = linjene[::-1]

    output_fil = open(output_filnavn, "w")
    for linje in omvendte_linjene:
        output_fil.write(linje)

    # Husk å lukke filen!
    output_fil.close()

omvendt_fil("input.txt", "output.txt")

05.15 Timelister

I denne oppgave skal du lage et system for å holde styr på timelister. Dette er en utfordrende oppgave som omhandler fillesing, filskriving, og ordbøker.

Vi har flere timeliste filer som ser slik ut:

  • Den første linjen i filen er en overskrift som inneholder navn
  • Resten av filen er 5 linjer som inneholder antall arbeidstimer for hver dag i arbeidsuken.

timeliste1.txt:

Louise,Sven,Kaja,Anna
8,6,7,6
8,6,7,7
4,6,0,0
8,6,4,0
8,6,0,0

timeliste2.txt:

Anna,Odd,Paal
0,4,8
0,4,8
6,5,8
8,5,8
6,5,0

a) Skriv en funksjon som leser inn en timelistefil og returnerer resultatet som en ordbok. Funksjonen skal returnere følgende gitt fil 1:

{'Louise': [8, 8, 4, 8, 8], 'Sven': [6, 6, 6, 6, 6], 'Kaja': [7, 7, 0, 4, 0], 'Anna': [6, 7, 0, 0, 0]}

NB: Ikke glem å konvertere tallene til heltall!

Hint

Du bør finne en måte å holde oversikt over:

  • om du leser den første linjen fra filen, eller eventuelle påfølgende linjer
  • hvilken indeks hvert av navnene vises for å matche timene til riktig person.


b) Skriv en funksjon som slår sammen to timelisteordbøker. Hvis et navn vises i begge ordbøkene, bør tidsoppføringene summeres sammen.
Resultatet skal se slik ut:

{'Louise': [8, 8, 4, 8, 8], 'Sven': [6, 6, 6, 6, 6], 'Kaja': [7, 7, 0, 4, 0], 'Anna': [6, 7, 6, 8, 6], 'Odd': [4, 4, 5, 5, 5], 'Paal': [8, 8, 8, 8, 0]}

c) Skriv en prosedyre som tar en timelisteordbok og skriver den til en fil på den samme formaten som de andre filene. Den skal ha to parametre: en timelisteordbok og et utdatafilnavn. Bruk denne prosedyren til å skrive den kombinerte timelisteordbok en fil.

a)

def les_timeliste(filnavn):
    fil = open(filnavn, "r")

    er_foerste_linje = True
    for linje in fil:
        if er_foerste_linje:
            overskrift_navn = linje.strip().split(",")

            timeliste_ordbok = {}
            for navn in overskrift_navn:
                timeliste_ordbok[navn] = []

            er_foerste_linje = False
        else:
            timer = linje.strip().split(",")

            for i in range(len(overskrift_navner)):
                navn = overskrift_navner[i]
                time = int(timer[i])
                timeliste_ordbok[navn].append(time)

    # Husk å lukke filen!
    fil.close()

    return timeliste_ordbok

b)

def slaa_sammen(ordbok1, ordbok2):
    ny_ordbok = {}

    for noekkel in ordbok1.keys():
        ny_ordbok[noekkel] = ordbok1[noekkel]

    for noekkel in ordbok2.keys():
        if noekkel in ny_ordbok.keys():
            for i in range(5):
                ny_ordbok[noekkel][i] += ordbok2[noekkel][i]
        else:
            ny_ordbok[noekkel] = ordbok2[noekkel]

    return ny_ordbok

c)

def skriv_timeliste_fil(ordbok, filnavn):
    fil = open(filnavn, "w")

    overskrift_navner = list(ordbok.keys())
    fil.write(",".join(overskrift_navner) + "\n")

    for i in range(5):
        linje = []
        for navn in overskrift_navner:
            linje.append(str(ordbok[navn][i]))
        fil.write(",".join(linje) + "\n")

    # Husk å lukke filen!
    fil.close()


timeliste1 = les_timeliste("timeliste1.txt")
timeliste2 = les_timeliste("timeliste2.txt")

timeliste = slaa_sammen(timeliste1, timeliste2)
skriv_timeliste_fil(timeliste, "timeliste.txt")