diff --git "a/Ovingsforelesninger/\303\230F7/bilder/dictionary-funksjoner.jpg" "b/Ovingsforelesninger/\303\230F7/bilder/dictionary-funksjoner.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..071589db8f6065b113f7f3741488b06207ee0783
Binary files /dev/null and "b/Ovingsforelesninger/\303\230F7/bilder/dictionary-funksjoner.jpg" differ
diff --git "a/Ovingsforelesninger/\303\230F7/bilder/fil-funksjoner.jpg" "b/Ovingsforelesninger/\303\230F7/bilder/fil-funksjoner.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..ce6e56577ce4cbabef9d401c8380677f35abaafc
Binary files /dev/null and "b/Ovingsforelesninger/\303\230F7/bilder/fil-funksjoner.jpg" differ
diff --git "a/Ovingsforelesninger/\303\230F7/bilder/number_file.jpg" "b/Ovingsforelesninger/\303\230F7/bilder/number_file.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..75455ca17022b505f12571e52863442b9d525c12
Binary files /dev/null and "b/Ovingsforelesninger/\303\230F7/bilder/number_file.jpg" differ
diff --git "a/Ovingsforelesninger/\303\230F7/bilder/sett_funksjoner.jpg" "b/Ovingsforelesninger/\303\230F7/bilder/sett_funksjoner.jpg"
new file mode 100644
index 0000000000000000000000000000000000000000..2bb8bb9840f8c39db331bfca4a6439abd1c2848e
Binary files /dev/null and "b/Ovingsforelesninger/\303\230F7/bilder/sett_funksjoner.jpg" differ
diff --git "a/Ovingsforelesninger/\303\230F7/numbers_multiline.txt" "b/Ovingsforelesninger/\303\230F7/numbers_multiline.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..9a98cb55ff65c785dd27b28f597bfaf305fbdbb9
--- /dev/null
+++ "b/Ovingsforelesninger/\303\230F7/numbers_multiline.txt"
@@ -0,0 +1,4 @@
+1 2 3 4 5
+6 7 8 9 10
+1 2 4 5 6
+10 11 12 13 100
\ No newline at end of file
diff --git "a/Ovingsforelesninger/\303\230F7/oppgaver.ipynb" "b/Ovingsforelesninger/\303\230F7/oppgaver.ipynb"
new file mode 100644
index 0000000000000000000000000000000000000000..6549048d11b9a86752642d0b69b0cdc1f9bbd48e
--- /dev/null
+++ "b/Ovingsforelesninger/\303\230F7/oppgaver.ipynb"
@@ -0,0 +1,791 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Øvingsforelesning 7 - ITGK\n",
+    "\n",
+    "Sets, dictionaries, og filbehandling"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Sets"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Forklaring av Sets\n",
+    "Et **sett** er en uordnet samling av elementer som er itererbar, muterbar og ikke  har duplikate elementer. Det fungerer på mange måter likt som en liste; man kan eksempelvis også legge til elementer i sett. Et sett har ikke indekser, så man kan **ikke** aksessere elementer ved hjelp av indeks som man gjør med lister og strenger. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mitt_sett = set([\"a\", \"b\", \"c\"])\n",
+    "print(mitt_sett)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "For å legge til et element i settet kan vi bruke `.add()`-funksjonen:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mitt_sett.add(\"d\")\n",
+    "print(mitt_sett)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "For å fjerne et element fra settet kan vi bruke `.discard()`-funksjonen:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mitt_sett.discard(\"d\")\n",
+    "print(mitt_sett)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Dersom vi har en liste med flere forekomster men ønsker å gjøre om til å bare ha én forekomst per element kan vi gjøre om listen til et sett. Siden et sett ikke har duplikate elementer vil det kun beholde en forekomst per element."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "duplikate_elementer = [1,1,2,2,4,4,2,1,1,3,3,3]\n",
+    "ingen_duplikater = set(duplikate_elementer)\n",
+    "print(ingen_duplikater)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Hvis vi vil konvertere settet vårt til en liste kan vi gjøre følgende:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "min_liste = list(ingen_duplikater)\n",
+    "print(min_liste)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Nå har vi en liste uten duplikate elementer. "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Test deg frem med sett selv\n",
+    "Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med sett selv. Gjerne kombiner det med konsepter du har lært tidligere som if-setninger, løkker og funksjoner."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "# Skriv koden din her"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Set-funksjoner: Nice to know\n",
+    "<img src=\"bilder/sett_funksjoner.jpg\" style=\"width: 700px;\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Oppgave 1 - Sets"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "*Du skal på butikken for moren din som ar skrevet en handleliste med mange varer. Da hun er litt glemsk hadde hun glemt at hun allerede har skrevet opp mange av varene tidligere. Det er din oppgave å lage en funksjon som henter ut kun ett av hver vare i handlelisten til moren din*"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "handleliste = [\"Brød\", \"Melk\", \"Smør\", \"Egg\", \"Melk\", \"Brød\", \"Melk\"]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a) Lag en funksjon, `unique_items` som tar inn en liste, `l`, som inneholder et ukjent antall elementer som kan forekomme flere ganger. Din oppgave er å returnere en **liste** som *kun* inneholder unike elementer. Dvs. at dersom `[1, 2, 3, 2, 2]` blir sendt inn i funksjonen som `l` skal `unique_items` returnere `[1, 2, 3]`\n",
+    "* Hint: bruk `set()`-funskjonen\n",
+    "* Husk å konvertere settet tilbake til en liste før du returnerer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Din kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "*I det du går ut av døren for å gå på butikken så får du en ny handleliste av faren din.*"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "handleliste_far = [\"Brød\", \"Kulturmelk\", \"Smør\", \"Salami\", \"Tannpasta\"]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b) Lag nå en funksjon `combine` som tar inn to lister, `list1` og `list2` og kombinerer varene i de to listene og returnerer en enkelt **liste** med alle unike varer."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Din kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Oppgave 2 - Sets"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Lag en funksjon `random_set` som prøver ti ganger å legge til et tilfeldig heltall mellom 1 og 10 i et set\n",
+    "* For hvert tall du prøver å legge til, print tallet\n",
+    "* Print til slutt det endelige settet og lengden av settet\n",
+    "\n",
+    "**Hint:**\n",
+    "* `my_set.add(verdi)`\n",
+    "* `print(my_set, \"har lengde\", len(my_set))`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Forklaring av Dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "En **dictionary** er en muterbar samling av elementer. I motsetning til lister kan *ikke* dictionaries indekseres basert på plass/tall, men indekseres basert på `keys`. På et abstrakt nivå består dictionaries av en `key` med en assosiert `value`."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Under er det definert en dictionary, `poeng`, som inneholder navn på personer som spiller et spill. Navnet er satt som nøkkel, og hvor mange poeng de har er verdien"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "poeng = {\"Kamilla\": 15, \"Julian\": 10, \"Gard\": 17, \"Frida\": 20, \"Marco\": 13}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "For å hente ut en `value` i en dictionary bruker vi den tilhørende `key`-en. Under henter vi ut poengene (value) til Gard (key)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(poeng[\"Gard\"])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true
+   },
+   "source": [
+    "Vi kan også sjekke om en `key` eksisterer i en dictionary. Merk at ved å bruke `value in dictionary` vil den automatisk sjekke keys og ikke values"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(\"Kamilla\" in poeng)\n",
+    "print(\"Joachim\" in poeng)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Hvis vi ønsker å sjekke om en `value` eksisterer i dictionary må vi bruke `.values()`-funksjonen som henter ut verdiene:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(13 in poeng.values())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "På samme måte som med lister, kan vi også iterere gjennom dictionarien ved hjelp av en for-løkke:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "for navn in poeng:\n",
+    "    print(navn, \"har\", poeng[navn], \"poeng\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Test deg frem med Dictionary selv\n",
+    "Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med Dictionaries selv. Gjerne kombiner det med konsepter du har lært tidligere som if-setninger, løkker og funksjoner."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "# Skriv koden din her"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Dictionary-funksjoner: Nice to know\n",
+    "<img src=\"bilder/dictionary-funksjoner.jpg\" style=\"width: 700px;\">\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Oppgave 3 - Dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "*Du har fått beskjed om å ta vare på alle prisene til elementene i handlelisten*"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a) Lag en ny dictionary `priser` som inneholder følgende elementer som key med korresponderende pris som value. Print ut prisen til 'Brød' etter den er definert.\n",
+    "* 'Brød': 23\n",
+    "* 'Melk': 17\n",
+    "* 'Egg': 39\n",
+    "* 'Smør': 30"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "*Moren din vil nå ha listen pent printet ut*"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b) Lag en funkjson, `print_prices`, som tar inn en dictionary `priser` og itererer gjennom alle elementene i `priser` og printer ut hver enkelt vare på sin egen linje med korresponderende pris adskilt med `:` og med `kr` på slutten."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c) Lag en funksjon `sluttpris`, som tar inn to dictionaries: \n",
+    "* En dictionary, `priser`. Den kan se slik ut: `{\"Brød\": 23, \"Melk\": 17, \"Kattemat\": 3}`.\n",
+    "* En dictionary `handlekurv` som kan se slik ut: `{\"Melk\": 2, \"Egg\": 4}`. Dette betyr at det ligger to melk og fire egg i handlekurven.\n",
+    "\n",
+    "Returner total pris på handlekurven, ved hjelp av de to dictionariene. Dersom handlekurven inneholder en vare som ikke finnes i `priser` så skal funksjonen returnere `-1`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "priser = {\"Brød\": 23, \"Melk\": 17, \"Kattemat\": 3, \"Egg\": 1}\n",
+    "handlekurv = {\"Melk\": 2, \"Egg\": 4}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<br><br>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Filbehandling"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Forklaring av filer"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "En **fil** er et sted du kan lagre data eller informasjon som lagres i minnet til datamaskinen din. Når du definerer variabler i koden din lagres de i korttidsminnet, mens en fil lagres i langtidsminnet til datamaskinen. "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "I kodeblokken under oppretter vi filen `min_fil.txt`. Den lagres på samme sted som notebooken ligger. `w` er modusen vi bruker, og forteller at filen er i skrivemodus."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fil = open(\"min_fil.txt\",\"w\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Vi kan gjøre flere ting med en fil, blant annet *skrive* til den og *lese* fra den. Under skriver vi 10 linjer til filen hvor det står `Dette er linje i` for hver linje 1-10, ved bruk av `.write()`-funksjonen."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "for i in range(1,11):\n",
+    "     fil.write(\"Dette er linje \" + str(i) + \"\\n\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Når vi er ferdig med å utføre handlinger på en fil, **må vi huske å lukke den**. Dette er blant annet fordi at å holde filer åpne i kortiddsminnet er kostbart for datamaskinen din."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fil.close()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "For å se om handlingen over var vellykket forsøker vi å lese fra filen ved bruk av `.read()`-funksjonen. Siden vi har lukket filen må vi åpne den på nytt. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fil = open(\"min_fil.txt\")\n",
+    "innhold = fil.read()\n",
+    "print(innhold)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Merk at dersom vi viser innhold, så ser det ikke helt lesbart ut da characters som linjeskift ser ut som `\\n` i teksten. For å få det på et fint format, kan vi bruke `print`-funksjonen som endrer `\\n` og andre white-space-karakterer til slik vi ønsker å se dem"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(innhold)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fil.close()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Vi kan også bruke en syntaks som lukker filen for oss automatisk. Dette er nyttig fordi den lukkes selv om en error oppstår, uten at vi trenger gjøre no ekstra. Du kan lese mer om `with` [her](https://docs.python.org/3/reference/compound_stmts.html#the-with-statement), men dette er skrevet på veldig teknisk språk så ikke vær bekymret om det ikke gir noe mening."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "with open(\"min_fil.txt\", \"r\") as fil:\n",
+    "    print(fil.readlines())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Test deg frem med filer selv\n",
+    "Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med Filer selv. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv koden din her"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Fil-funksjoner: Nice to know \n",
+    "<img src=\"bilder/fil-funksjoner.jpg\" style=\"width: 700px;\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Oppgave 4 - Filbehandling"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a) Skriv en funksjon `produce_number_file` som tar inn som inputparametere: \n",
+    "* `filename`: et filnavn \n",
+    "* `a`: et tall\n",
+    "* `b`: et tall\n",
+    "\n",
+    "Programmet skal opprette en fil med navn `filnavn` og skrive 100 tilfeldige tall mellom a og b, med linjeskift mellom, til en fil med navnet filnavn. Bildet under er en visualisering av filen. Se filen `numbers.txt` for eksempel på utskrift\n",
+    "* Hint: `file.write(\"\\n\")`"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<img src=\"bilder/number_file.jpg\" style=\"width: 400px;\">"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b) Skriv en funksjon `append_to_file` som tar inn som inputparametere\n",
+    "* `filename`: et filnavn til en eksisterende fil\n",
+    "* `a`: et tall\n",
+    "* `b`: et tall\n",
+    "\n",
+    "Programmet skal appende/legge til 20 nye tilfeldige tall i filen, ett tall på hver linje"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c) Skriv en funksjon, `from_file_to_list` som tar inn et parameter `filename` som er filnavnet til en fil med ett tall på hver linje, og putter alle tallene i en liste Listen med tall skal returneres.\n",
+    "\n",
+    "\n",
+    "Det du ønsker å gjøre:\n",
+    "* Åpne filen du skal lese fra\n",
+    "* For hver linje i filen:  `for line in file.readlines():`\n",
+    "    * Preprosesser (Fjern linjeskift ect) `line.strip()`\n",
+    "    * Legge det i en liste eller annen datastruktur\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv inn kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "d) Skriv en funksjon, `from_file_to_list`, som tar inn et parameter `filename` som er filnavnet til en fil med fem tall på hver linje, separert med mellomrom. Funksjonen skal returnere en liste med alle tallene i filen.\n",
+    "\n",
+    "Test ut funksjonen på filen `numbers_multiline.txt` som ser slik ut:\n",
+    "\n",
+    "```\n",
+    "1 2 3 4 5\n",
+    "6 7 8 9 10\n",
+    "1 2 4 5 6\n",
+    "10 11 12 13 100\n",
+    "```\n",
+    "\n",
+    "Sørg for at alle verdiene lagres som heltall (alt som hentes fra en fil er strenger)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv din kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "e) Skriv en funksjon `count_occurences` som tar inn et parameter `filename` som er filnavnet til en fil med ett tall på hver linje. Deretter skal funksjonen returnere en dictionary med alle **distinkte** tall i denne filen som keys, og antall forekomster av dette tallet i filen skal være verdien i dictionary-en."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv din kode her\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Unntakshåndtering\n",
+    "Hva gjør du om filen ikke finnes?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "with open(\"feil_fil.txt\", \"r\") as file:\n",
+    "        print(file.read())"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.10.7 64-bit",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.10.6"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git "a/Ovingsforelesninger/\303\230F7/tall.txt" "b/Ovingsforelesninger/\303\230F7/tall.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..07e73d2a9b3aeec67a022821f5b94dfb28b295ba
--- /dev/null
+++ "b/Ovingsforelesninger/\303\230F7/tall.txt"
@@ -0,0 +1,120 @@
+49
+40
+71
+65
+56
+9
+79
+5
+69
+83
+10
+48
+13
+33
+62
+80
+74
+18
+8
+59
+91
+62
+51
+56
+1
+93
+9
+51
+43
+82
+70
+69
+71
+79
+30
+78
+39
+61
+72
+40
+19
+28
+12
+46
+1
+65
+88
+65
+73
+47
+6
+1
+44
+22
+59
+15
+91
+96
+27
+99
+84
+99
+80
+73
+63
+75
+57
+63
+82
+82
+50
+81
+84
+24
+1
+8
+51
+36
+12
+82
+35
+32
+63
+77
+41
+21
+47
+24
+10
+86
+37
+14
+24
+13
+90
+49
+95
+87
+86
+36
+99
+18
+55
+28
+39
+25
+67
+73
+40
+89
+54
+93
+31
+47
+69
+23
+59
+53
+68
+84