diff --git a/lectures/chap5/lab/generelt_om_filbehandling.ipynb b/lectures/chap5/lab/generelt_om_filbehandling.ipynb deleted file mode 100644 index 0a1666082ce21c2fd9963fd84463b2fed9fc3c52..0000000000000000000000000000000000000000 --- a/lectures/chap5/lab/generelt_om_filbehandling.ipynb +++ /dev/null @@ -1,543 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "run_control": { - "frozen": true - } - }, - "source": [ - "# Generelt om filbehandling\n", - "\n", - "**Læringsmål:**\n", - "- Filbehandling\n", - "- Betingelser\n", - "- Løkker\n", - "\n", - "I denne oppgaven skal vi skrive til en fil og lese fra en fil." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "## Generelt om filer\n", - "Det kan være lurt å lese dette før du går videre" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Det er ofte nyttig å kunne lagre data til en fil, eller lese data fra en fil når man skriver et program i Python. De mest brukte funksjonene er for åpning, redigering og lukking av eksterne filer. \n", - "\n", - "Når du åpner filen må du spesifisere hvordan du skal bruke filen. Det er derfor viktig å åpne filen på riktig måte. Måten dette gjøres på er som inn-parameter i `open()`-funksjonen, noen eksempler er:\n", - "\n", - "- **'r'** - for lesing av filen (default)\n", - "- **'w'** - for skriving til filen\n", - "- **'a'** - for å legge til data (**a**ppend) til den eksisterende filen\n", - "\n", - "I denne oppgaven skal vi bli bedre kjent med hvordan dette fungerer:\n", - "\n", - "- For å åpne en fil i Python kan vi skrive: `f = open('filename', Bruksmåte)`. Bruksmåte er enten `'r'`, `'w'` eller `'a'` avhengig av hva hvordan filen skal brukes.\n", - "- For å lese data fra en fil kan vi bruke: `innhold = f.read()`\n", - "- For å legge til data til en fil kan vi skrive: `f.write(data)`\n", - "\n", - "Filer lukkes på følgende måte: `f.close()`" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "### Lesing av fil" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Eksempelet under viser lesing av en fil. **Kjør koden under og test det ut da vel!**" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "hidden": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dette er en eksempelfil.\n", - "\n", - "Her kan man skrive hva man vil.\n", - "\n", - "Men helst ikke for mange hatefulle ytringer.\n" - ] - } - ], - "source": [ - "# LESING AV FIL\n", - "f = open('example_file1.txt','r') #r spesifiserer at man skal lese fra en fil\n", - "innhold = f.read()\n", - "print(innhold)\n", - "f.close()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Når man leser en fil slik som over, må man lagre innholdet i en variabel (her bruker vi `innhold`). **Husk alltid å lukke filen!**\n", - "\n", - "Den filen som ble lest fra finner dere her: [example_file1.txt](example_file1.txt). Prøv å endre på filen, lagre den med `file -> save` i toppmenyen for så å kjøre kodeblokken over på nytt. Kodeblokken burde da skrive ut det nye innholdet i filen!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "### Skriving av fil" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "For å skrive til en fil kan man gjøre slik som under. **Kjør koden under og test!**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hidden": true - }, - "outputs": [], - "source": [ - "f = open('example_file1.txt','w') #w spesifiserer at filen skal skrives til\n", - "f.write('En hatefull ytring')\n", - "f.close()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Etter at du har kjørt koden over vil du kunne se at innholdet i [example_file1.txt](example_file1.txt) har endret seg. Hvis du vil kan du bytte ut `'w'` over med `'a'` og se hva som da skjer." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Context managers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Det er generelt foretrukket i python å bruke _context managers_ når man gjør operasjoner som å skrive til og lese fra fil. De tar hånd om lukking av fila når du er ferdig, og passer på å lukke også dersom koden crasher underveis i en operasjon. Da kan vi være trygge på at vi ikke får korrupte filer.\n", - "\n", - "Åpning og lukking av filer med context managere gjøres som følger" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "En hyggelig kommentar\n" - ] - } - ], - "source": [ - "with open('example_file.txt', 'w') as writefile:\n", - " writefile.write(\"En hyggelig kommentar\")\n", - "\n", - "with open('example_file.txt', 'r') as readfile:\n", - " innhold = readfile.read()\n", - " print(innhold)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Man kan også åpne og lukke flere filer i gangen" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "En hyggelig kommentar\n", - "---\n", - "Dette er en eksempelfil.\n", - "\n", - "Her kan man skrive hva man vil.\n", - "\n", - "Men helst ikke for mange hatefulle ytringer.\n" - ] - } - ], - "source": [ - "with open('example_file.txt', 'r') as file_0, open('example_file1.txt', 'r') as file_1:\n", - " innhold_0 = file_0.read()\n", - " innhold_1 = file_1.read()\n", - " print(innhold_0, innhold_1, sep=\"\\n---\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "## a)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Lag en funksjon `write_to_file(data)` som tar inn strengen `data` og legger denne inn i en fil **my_file.txt**\n", - "\n", - "***Skriv din kode i kodeblokken under***" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hidden": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Hvis du lurer på om du gjorde riktig kan du kalle på funksjonen og sjekke innholdet i filen her:\n", - "[my_file.txt](my_file.txt)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "#### Hint" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Her skal du skrive til fil og må derfor benytte deg av\n", - "\n", - "```python\n", - "f = open('my_file.txt', 'w')\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "## b)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Lag en funksjon `read_from_file(filename)` som tar inn strengen `filename` med filnavnet og skriver ut innholdet.\n", - "\n", - "***Skriv koden i kodeblokken under***" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hidden": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Du kan teste ut funksjonen ved å kalle den med `'my_file.txt'` som argument." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "#### Hint" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Her skal du lese fra fil og må derfor benytte deg av\n", - "```python\n", - "f = open('my_file.txt', 'r')\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "heading_collapsed": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "## c)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Lag en funksjon `main()` hvor bruker får valget mellom å skrive til fil eller lese fra fil. Funksjonen skal kjøre så lenge brukeren ikke svarer `'done'`. (Se eksempelkjøring)\n", - "\n", - "- Hvis brukeren velger **write** skal du bruke **a)** til å skrive data til **my_file.txt**\n", - "- Hvis brukeren velger **read** skal du skrive ut innholdet (dersom det er noe) i **my_file.txt** vha. **b)**\n", - "\n", - "**Eksempel på kjøring:**\n", - "```\n", - "Do you want to read or write? write\n", - "What do you want to write to file? hei allan\n", - "hei allan was written to file.\n", - "Do you want to read or write? read\n", - "hei allan\n", - "Do you want to read or write? done\n", - "You are done.\n", - "```\n", - "\n", - "***Skriv koden din i kodeblokken under***" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hidden": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false, - "editable": false, - "hidden": true, - "run_control": { - "frozen": true - } - }, - "source": [ - "Du kan når som helst sjekke innholdet i [my_file.txt](my_file.txt)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.10.6 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" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": false, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false - }, - "vscode": { - "interpreter": { - "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/lectures/chap5/lab/lf/databaser.ipynb b/lectures/chap5/lab/lf/databaser.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..3f7ae267ead47cce86def1142c2f61ac544c0f48 --- /dev/null +++ b/lectures/chap5/lab/lf/databaser.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### MySQL database\n", + "\n", + "Man kan koble opp mot forskjellige databaser i Python:\n", + "- GadFly\n", + "- mSQL\n", + "- **MySQL**\n", + "- PostgreSQL\n", + "- Microsoft SQL Server 2000\n", + "- Informix\n", + "- Interbase\n", + "- Oracle\n", + "- Sybase\n", + "- …\n", + "\n", + "Eller bruke SqlLite3 \n", + "- Egen database modul for Python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Viser hvordan vi kobler oss mot SQLite og leser/oppdaterer data.\n", + "# Importerer modulen sqlite3 (trenger ikke installasjon)\n", + "import sqlite3 as sql" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Oppretter en tilkobling til databasen\n", + "# Hvis databasen ikke eksisterer, opprettes den\n", + "# Hvis databasen eksisterer, kobler vi oss til den\n", + "connection = sql.connect('database_name.db')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Oppretter en cursor som lar oss utføre SQL-kommandoer\n", + "# Cursor er en peker som lar oss utføre SQL-kommandoer\n", + "# En peker er en variabel som inneholder en adresse til et objekt\n", + "cursor = connection.cursor()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<sqlite3.Cursor at 0x1b1563627c0>" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oppretter en tabell\n", + "# Hvis tabellen ikke eksisterer, opprettes den\n", + "# Hvis tabellen eksisterer, opprettes den ikke på nytt\n", + "# Vi kan bruke f-strings for å sette inn variabler i SQL-kommandoer\n", + "table_name = 'brukere'\n", + "\n", + "create_table = f'''\n", + " CREATE TABLE IF NOT EXISTS {table_name} (\n", + " id INTEGER PRIMARY KEY,\n", + " name TEXT\n", + " )\n", + "'''\n", + "\n", + "cursor.execute(create_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<sqlite3.Cursor at 0x1b1563627c0>" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Definer data som skal settes inn i tabellen\n", + "# Liste med tupler\n", + "user_data = [\n", + " (1, 'John'),\n", + " (2, 'Jane'),\n", + " (3, 'Alice')\n", + "]\n", + "\n", + "# Insert the data into the table\n", + "# Vi kan bruke f-strings for å sette inn variabler i SQL-kommandoer\n", + "# Vi kan bruke executemany for å sette inn flere rader samtidig\n", + "cursor.executemany(f'''\n", + " INSERT OR REPLACE INTO {table_name} (id, name)\n", + " VALUES (?, ?)\n", + "''', user_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 'John')\n", + "(2, 'Jane')\n", + "(3, 'Alice')\n" + ] + } + ], + "source": [ + "# Henter ut data fra tabellen\n", + "# Vi kan bruke f-strings for å sette inn variabler i SQL-kommandoer\n", + "# Vi kan bruke * for å hente ut alle kolonner\n", + "# Vi kan bruke WHERE for å filtrere data\n", + "# Vi kan bruke ORDER BY for å sortere data\n", + "# Vi kan bruke LIMIT for å begrense antall rader\n", + "# Vi kan bruke OFFSET for å hoppe over rader\n", + "# Vi kan bruke LIKE for å filtrere data med et mønster (wildcard)\n", + "# Vi kan bruke IN for å filtrere data med flere verdier\n", + "# Vi kan bruke IS NULL for å filtrere data som er NULL\n", + "# Vi kan bruke IS NOT NULL for å filtrere data som ikke er NULL\n", + "# Vi kan bruke DISTINCT for å filtrere ut duplikater\n", + "# Vi kan bruke COUNT for å telle antall rader\n", + "cursor.execute(f'SELECT * FROM {table_name}')\n", + "\n", + "# Fetch all rows as a list of tuples\n", + "rows = cursor.fetchall()\n", + "\n", + "# Print the rows\n", + "# Vi kan bruke for-løkke for å iterere over resultatet\n", + "for row in rows:\n", + " print(row)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Oppdaterer data i tabellen\n", + "connection.commit()\n", + "\n", + "# Lukker tilkoblingen til databasen\n", + "connection.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave a)\n", + "Lag en ny tabell og kall den **emner**. Definer emnekode, tittel og beskrivelse (alle av typen streng)." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Svar" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave b\n", + "\n", + "Endre i tabellen \"brukere\" slik at det er en kobling mellom \"brukere\" og \"emner\". Nøkkel kan være emnekode." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Svar" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave C\n", + "Skriv kode som fyller tabellen emner med data fra en liste. Oppdater tabellen brukere slik at hver bruker peker på en eller flere emner." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Svar " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lectures/chap5/lab/lf/lab-5.md b/lectures/chap5/lab/lf/lab-5.md new file mode 100644 index 0000000000000000000000000000000000000000..27401679e524704a9cf9319ab5377560f3f09ca7 --- /dev/null +++ b/lectures/chap5/lab/lf/lab-5.md @@ -0,0 +1,15 @@ +# Lab-2 + +## Læringsutbytte + +* Kunne skrive enkle matematiske uttrykk i Python +* Lære å definere funksjoner i Python +* Kunne sette opp logiske uttrykk +* Lære å bruke if-setningen i Python. + +## Læringsaktiviteter + +* [Funksjoner og kalkulasjoner](funksjoner_og_kalkulasjoner.ipynb) +* [Logiske operatorer og uttrykk](logiske_operatorer_uttrykk.ipynb) +* [Valg](ulike_typer_if_setninger.ipynb) +* [Årstider](aarstider.ipynb) diff --git a/lectures/chap5/lab/lf/lotto.ipynb b/lectures/chap5/lab/lf/lotto.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..090ce29638765cd71c30d61800618a0dc8b0ff6f --- /dev/null +++ b/lectures/chap5/lab/lf/lotto.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "# Lotto\n", + "\n", + "**Læringsmål:**\n", + "\n", + "* Lister\n", + "* Tilfeldige tall\n", + "\n", + "\n", + "I denne oppgaven lage du lage en lottosimulator. \n", + "\n", + "Reglene er som følger:\n", + "\n", + "* Det trekkes ut 7 lottotall og 3 tilleggstall fra og med 1 til og med 34. Alle tallene som trekkes skal være unike.\n", + "* Premier deles ut basert på følgende tabell:\n", + "\n", + "Premiergruppe|Premie (kr)\n", + ":---|---\n", + "7 rette\t|2 749 455\n", + "6 rette + 1 tilleggstall\t|102 110\n", + "6 rette\t|3 385\n", + "5 rette\t|95\n", + "4 rette + 1 tilleggstall\t|45" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave a: frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en liste som heter `numbers` og som inneholder alle heltall fra og med 1 til og med 34.\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:21:03.176781Z", + "start_time": "2019-07-03T10:21:03.167560Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave b: frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en liste som heter `my_guess` med 7 tall. Denne listen inneholder tallene som du tipper.\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:21:45.639510Z", + "start_time": "2019-07-03T10:21:45.634558Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave c: frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en funksjon som tar inn `n` som argument og som trekker ut `n` tall ut av listen `numbers` og legger de i en egen liste. \n", + "For å gjøre ting tilfeldig: `import random` og `random.randint(n,N)` gir tilfeldige tall fra og med n til og med N.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + ">>>print(draw_numbers(numbers, 7))\n", + "[16, 33, 5, 20, 7, 4, 8]\n", + "```\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:25:33.636784Z", + "start_time": "2019-07-03T10:25:33.631639Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "heading_collapsed": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "#### Hint" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "Hint: Bruk funksjonene `pop()` og `append()` for å fjerne og legge til elementer i en liste. Husk at pop fjerner et element i en indeks i lista, den fjerner ikke tallet. Så numbers.pop(rand_num) fjerner elementet på indeks rand_num - altså hvis rand_num er 13 fjernes tallet på indeks 13, ikke tallet 13!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave d: frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag funksjonen `comp_list` som sammenligner to lister med tall. Antall like tall i listene skal returneres.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + ">>>print(comp_list(draw_n_umbers(numbers,7),my_guess))\n", + "1\n", + "```\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:28:03.696473Z", + "start_time": "2019-07-03T10:28:03.691094Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave e: frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en funksjon som tar inn antall like tall og like tilleggstall, og returnerer premien du har vunnet.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + ">>>print(winnings(7,1))\n", + "2749455\n", + ">>>print(winnings(5,2))\n", + "95\n", + ">>>print(winnings(3,1))\n", + "0\n", + "```\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:30:20.037475Z", + "start_time": "2019-07-03T10:30:20.032125Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave f: frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Funksjonene skal settes sammen i main() slik at dette blir en fullverdig lottosimulator (for en lottorekke). Tallene du skal trekke ut (både lottotallene og tilleggstallene) kan legges i samme liste. Funksjonen `comp_list` kan da sammenligne de første 7 tallene, og så de siste 3 tallene, for å finne ut hvor mange like tall du har. main() skal returnere hvor mye du har tjent eller mest sannsynlig tapt på denne lottorekken. Dersom en lottorekke kosten 5 kroner, vil -5 returneres dersom winnings() er 0. Hvis du er heldig og winnings() blir 95 skal 90 returneres fra main(). \n", + "\n", + "**Husk at du kan bruke alle funksjoner du har definert over!**\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:32:57.485045Z", + "start_time": "2019-07-03T10:32:57.477602Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "## Oppgave g: frivillig\n", + "Frivillig" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Finn ut hvor mye man har vunnet etter å ha tippet en million ganger. Anta at premiepotten er det samme hver uke, og at en lottorekke koster 5 kroner.\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T10:33:24.728040Z", + "start_time": "2019-07-03T10:33:24.722740Z" + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 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" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + }, + "vscode": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}