IN1000 høst2024
Introduksjon til objektorientert programmering (Python)
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")