diff --git a/lectures/chap4/lab/lf/generelt_om_filbehandling.ipynb b/lectures/chap4/lab/lf/generelt_om_filbehandling.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..07349f9399e6cb7730488f4d61ef807f2522e3d3 --- /dev/null +++ b/lectures/chap4/lab/lf/generelt_om_filbehandling.ipynb @@ -0,0 +1,486 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": true + } + }, + "source": [ + "# Generelt om filbehandling\n", + "\n", + "**Læringsmål:**\n", + "- Filbehandling\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": [ + "# Svar\n", + "def write_to_file(data):\n", + " f = open('my_file.txt','w')\n", + " f.write(data)\n", + " f.close()" + ] + }, + { + "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": [ + "# Svar\n", + "def read_from_file(filename):\n", + " f = open(filename)\n", + " data = f.read()\n", + " print(data)\n", + " f.close()" + ] + }, + { + "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", + "```" + ] + } + ], + "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/chap4/lab/lf/generelt_om_lister.ipynb b/lectures/chap4/lab/lf/generelt_om_lister.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..c0e644111ba54532811a3c563cb3f456502c6081 --- /dev/null +++ b/lectures/chap4/lab/lf/generelt_om_lister.ipynb @@ -0,0 +1,502 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "# Generelt om lister\n", + "\n", + "**Læringsmål:**\n", + "\n", + "* Lister\n", + "\n", + "\n", + "I denne oppgaven skal vi bli kjent med hvordan lister fungerer i Python ved å opprette enkle lister, endre på dem, og skrive ut listene til konsollen. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "heading_collapsed": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "### Generelt om lister" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lister er en mye brukt datastruktur for å tilordne én variabel en rekke med verdier. Lister kan blant annet inneholde tall, strenger eller andre lister.\n", + "\n", + "For å opprette en tom liste i Python skriver vi []. Vilkårlig lange lister kan lages ved å skrive [a, b, c, ... ], der a, b, og c er elementer i listen. For eksempel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:01:11.287280Z", + "start_time": "2019-07-03T07:01:11.230243Z" + }, + "hidden": true + }, + "outputs": [], + "source": [ + "min_liste = [4,'elementer','i','listen']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "Hvert element i en liste har en indeks, som beskriver posisjonen elementet har i listen. Denne brukes når vi skal endre eller finne et element i en liste.\n", + "\n", + "Lister i Python er nullindeksert, det vil si at det første elementet har indeks 0, det neste elementet har indeks 1, osv. Ved å skrive liste[index] kan vi finne eller endre elementer i en liste. Dvs. at min_liste[0] er 4, min_liste[1] er 'elementer', min_liste[2] er 'i' og min_liste[3] er 'listen'.\n", + "\n", + "For eksempel: (**Prøv gjerne å endre på koden og se hva som skjer**)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:01:58.309772Z", + "start_time": "2019-07-03T07:01:58.301527Z" + }, + "hidden": true + }, + "outputs": [], + "source": [ + "min_liste = [4,'elementer','i','listen']\n", + "print(min_liste[0]) # koden skriver ut elementet på posisjon 0 i listen: 4\n", + "min_liste[1] = 'ting'\n", + "print(min_liste[1]) # koden skriver ut elementet på posisjon 1 i listen: ting" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### a)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en liste **my_first_list** med alle heltallene fra og med 1 til og med 6.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + "print(my_first_list)\n", + "[1, 2, 3, 4, 5, 6]\n", + "```\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:04:40.859385Z", + "start_time": "2019-07-03T07:04:40.850440Z" + } + }, + "outputs": [], + "source": [ + "# Svar\n", + "my_first_list = [1, 2, 3, 4, 5, 6]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### Lengde av lister" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "For å finne lengden på en liste er det nyttig å benytte seg av den innebygde funksjonen, len(). Dersom vi tar len(min_liste) vil dette være lik 4 dersom min_liste er lik som under Generelt om lister. Lengden er altså lik antall elementer i listen. Ettersom en liste er nullindeksert vil indeksen til det siste elementet alltid være lik lengden-1. For eksempel vil det siste elementet i min_liste være på indeks 3 når lengden er 4. En annen måte å få ut det siste elementet i en liste er å tenke at det siste elementet har indeks -1, da vil det nest siste elementet ha indeks -2 osv." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### b)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Skriv ut det siste elementet i listen til skjerm. **Husk at du kan bruke listen fra forrige oppgave uten å definere my_first_list på nytt.**\n", + "\n", + "(obs: dette kan gjøres på to forskjellige måter)\n", + "\n", + "Eksempel på kjøring:\n", + "```python\n", + "6\n", + "```\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:08:45.565459Z", + "start_time": "2019-07-03T07:08:45.558296Z" + } + }, + "outputs": [], + "source": [ + "# Svar\n", + "print(my_first_list[5]) #hvis du vet størrelse\n", + "# eller\n", + "print(my_first_list[-1])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### c)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "c) Bytt ut det nest siste elementet (5) med tekststrengen 'pluss'.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + "print(my_first_list)\n", + "[1, 2, 3, 4, 'pluss', 6]\n", + "```\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Svar \n", + "my_first_list[4] = 'pluss'\n", + "# eller\n", + "my_first_list[-2] = 'pluss'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "heading_collapsed": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "### Slicing av lister" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "La oss si at vi har en liste som inneholder 5 elementer, for eksempel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:14:14.588974Z", + "start_time": "2019-07-03T07:14:14.582646Z" + }, + "hidden": true + }, + "outputs": [], + "source": [ + "bokstaver = ['a', 'b', 'c', 'd', 'e']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:14:21.095731Z", + "start_time": "2019-07-03T07:14:21.084154Z" + }, + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "Vi ønsker en ny liste som kun inneholder de første 3 elementene, dvs. 'a', 'b' og 'c', og den listen skal hete bokstaver_abc." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "bokstaver_abc = bokstaver[:3]\n", + "print(bokstaver_abc)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "En generell formel for slicing er:\n", + "\n", + "nyListe = liste[start:slutt]\n", + "\n", + "hvor start er indeksen til det første tallet du ønsker å ha med, og slutt er indeksen+1 til det siste tallet du ønsker å ha med. Altså er den formelen skrevet som \"fra og med\" start og \"til, men ikke med\" slutt. Dersom man ikke skriver noe på start som i eksempelet over, vil programmet anta at du mener fra starten av listen, og dersom du ikke skriver noe på slutt vil programmet anta at du mener frem til listen er ferdig." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### d)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en ny liste **my_second_list** som skal inneholde de tre siste elementene i **my_first_list**.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + "print(my_second_list)\n", + "[4, 'pluss', 6]```\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T07:17:15.542842Z", + "start_time": "2019-07-03T07:17:15.536871Z" + } + }, + "outputs": [], + "source": [ + "# Svar\n", + "my_second_list = my_first_list[3:]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### e)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Skriv ut my_second_list og tekststrengen 'er lik 10' til skjerm.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + "[4, 'pluss', 6] er lik 10\n", + "```\n", + "\n", + "***Skriv koden din i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Svar\n", + "print(my_second_list, 'er lik 10')\n" + ] + } + ], + "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/chap4/lab/lf/lab-4.md b/lectures/chap4/lab/lf/lab-4.md new file mode 100644 index 0000000000000000000000000000000000000000..2f02e20ffa23c1dec66e182e0d7a3e3c1a1ba4a3 --- /dev/null +++ b/lectures/chap4/lab/lf/lab-4.md @@ -0,0 +1,15 @@ +# Lab-4 + +## Læringsutbytte + +* Lære i lage lister, kopiere og redigere +* Forstå forskjellen mellom lister og tupler +* Bruke løkker for å traversere lister +* Jobbe med sets + +## Læringsaktiviteter + +* [Generelt om lister](generelt_om_lister.ipynb) +* [Lister og løkker](lister_og_lokker.ipynb) +* [Tupler](lister_og_tupler.ipynb) +* [Sets](generelt_om_sets.ipynb) diff --git a/lectures/chap4/lab/lf/lister_og_lokker.ipynb b/lectures/chap4/lab/lf/lister_og_lokker.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..a4fde88045b0af346880901d3d6820253c5f4626 --- /dev/null +++ b/lectures/chap4/lab/lf/lister_og_lokker.ipynb @@ -0,0 +1,339 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "# Lister og løkker\n", + "\n", + "**Læringsmål:**\n", + "\n", + "* Lister\n", + "\n", + "* Løkker\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "heading_collapsed": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "### Iterering gjennom en liste" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "For å iterere/gå gjennom elementene i en liste brukes løkker, og dette gjøres hovedsakelig på to ulike måter:\n", + "\n", + "1) For-løkker, ved å bruke range()-funksjonen og indekser.\n", + "\n", + "Eksempel:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "hidden": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n" + ] + } + ], + "source": [ + "liste = [1,2,3,4,5]\n", + "lengde = len(liste) #5\n", + "for x in range(lengde):\n", + " print(liste[x])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "2) For-in-løkker, som henter ut ett og ett element av en liste." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "hidden": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n" + ] + } + ], + "source": [ + "liste = [1,2,3,4,5]\n", + "for x in liste:\n", + " print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "hidden": true, + "run_control": { + "frozen": true + } + }, + "source": [ + "Disse metodene brukes om hverandre, og det er lurt å kunne bruke begge. Begge gir samme output. **Kjør dem selv for å verifisere med ctr + enter**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### a)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Lag en liste **number_list** med alle heltallene fra 0 til og med 99.\n", + "\n", + "Eksempel på kjøring:\n", + "\n", + "```python\n", + ">>>print(number_list)\n", + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,..., 99]\n", + "```\n", + "***Skriv svaret ditt i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T08:50:15.387298Z", + "start_time": "2019-07-03T08:50:15.193943Z" + } + }, + "outputs": [], + "source": [ + "# Svar\n", + "\n", + "number_list = list(range(100))\n" + ] + }, + { + "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": [ + "For å legge til et nytt **element** til en liste (**my_list**) kan du bruke den innebygde funksjonen \"append\" slik: my_list.append(element)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### b) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Summer sammen alle tall i listen som er delelig på 3 eller 10. (Summen skal bli 1953)\n", + "\n", + "***Skriv svaret ditt i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2019-07-03T08:51:59.090936Z", + "start_time": "2019-07-03T08:51:58.991126Z" + } + }, + "outputs": [], + "source": [ + "# Svar\n", + "sum = 0\n", + "for number in number_list:\n", + " if number % 3 == 0 or number % 10 == 0:\n", + " sum += number\n", + "print(sum)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "### c)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "source": [ + "Bytt plass på alle nabo partall og oddetall i listen. (listen skal nå være: [1, 0, 3, 2, 5, 4, 7, 6, 9, 8,..., 98])\n", + "\n", + "***Skriv svaret ditt i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Svar\n", + "for i in range(0, len(number_list)-1, 2):\n", + " number_list[i], number_list[i+1] = number_list[i+1], number_list[i]\n", + "print(number_list)\n" + ] + } + ], + "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.11.2" + }, + "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 +}