diff --git a/lectures/lecture4/lab/generelt_om_lister.ipynb b/lectures/lecture4/lab/generelt_om_lister.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..6b5334708248e9fbf216d19debdd69eae89bd281 --- /dev/null +++ b/lectures/lecture4/lab/generelt_om_lister.ipynb @@ -0,0 +1,483 @@ +{ + "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": [] + }, + { + "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": [] + }, + { + "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": [] + }, + { + "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": [] + }, + { + "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": [] + } + ], + "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/lecture4/lab/lab-4.md b/lectures/lecture4/lab/lab-4.md index 27401679e524704a9cf9319ab5377560f3f09ca7..32bb7f8e6c1941a9061ca03538f4ee735e540610 100644 --- a/lectures/lecture4/lab/lab-4.md +++ b/lectures/lecture4/lab/lab-4.md @@ -1,15 +1,13 @@ -# Lab-2 +# Lab-4 ## 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ære i lage lister, kopiere og redigere +* Forstå forskjellen mellom lister og tupler +* Bruke løkker for å traversere lister ## 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) +* [Generelt om lister](generelt_om_lister.ipynb) +* [Lister og løkker](lister_og_lokker.ipynb) +* [Tupler](lister_og_tupler.ipynb) diff --git a/lectures/lecture4/lab/lister_og_lokker.ipynb b/lectures/lecture4/lab/lister_og_lokker.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..1c3f05834ac00413077e7e639afd0d44f7dd6854 --- /dev/null +++ b/lectures/lecture4/lab/lister_og_lokker.ipynb @@ -0,0 +1,364 @@ +{ + "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": [] + }, + { + "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": [] + }, + { + "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": [] + }, + { + "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 **reversed_list** som inneholder elementene i **number_list** i motsatt rekkefølge. (Merk: uten å bruke innebygde funksjoner i Python)\n", + "\n", + "Dersom du nå printer listen skal du få:\n", + " \n", + "```python\n", + "[98, 99, 96, 97, 94, 95, 92, 93, 90, 91, 88, 89, 86, 87, 84, 85, 82, 83, 80, 81, 78, 79, 76, 77, 74, 75, 72, 73, 70, 71, 68, 69, 66, 67, 64, 65, 62, 63, 60, 61, 58, 59, 56, 57, 54, 55, 52, 53, 50, 51, 48, 49, 46, 47, 44, 45, 42, 43, 40, 41, 38, 39, 36, 37, 34, 35, 32, 33, 30, 31, 28, 29, 26, 27, 24, 25, 22, 23, 20, 21, 18, 19, 16, 17, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1]\n", + "```\n", + "\n", + "***Skriv svaret ditt i boksen under.***" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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 +} diff --git a/lectures/lecture4/lab/lister_og_tupler.ipynb b/lectures/lecture4/lab/lister_og_tupler.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..ce10a248a1078b2a459b74bce1528d6bb5d32e7a --- /dev/null +++ b/lectures/lecture4/lab/lister_og_tupler.ipynb @@ -0,0 +1,148 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lister og tupler\n", + "\n", + "**Læringsmål:**\n", + "\n", + "* Lister\n", + "* Tupler\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Denne oppgaven handler om *muterende* endringer av lister, samt forskjellen mellom tupler og lister. Hovedpoenget med muterende endringer er at dette er endringer, f.eks i en funksjon som skal være permanente *etter* at funksjonen avsluttes. Eksempelet under illustrerer en vanlig fallgruve knyttet til dette:\n", + "\n", + "```python\n", + "lis1 = [1,2,3]\n", + "lis2 = lis1\n", + "lis3 = lis1[:]\n", + "lis1[0] = 2\n", + "print(lis2)\n", + "print(lis3)\n", + " \n", + "Out: [2, 2, 3]\n", + " [1, 2, 3]\n", + "```\n", + "Her peker lis1 og lis2 til *samme* referanse i minnet, og begge vil endres hvis et av objektene endres. lis3 derimot er en (shallow) kopi av originalliste og endres derfor ikke. Hvis vi bruker funksjonen id(), så ser vi at lis1 og lis2 har samme id, men at lis3 har ulik id. \n", + "\n", + "\n", + "Dette er overførbart til et annet type problem. Eksempelvis, hvis man skal fjerne serieduplikater i en liste (tall som kommer rett etter hverandre), kan man skrive følgende kode:\n", + "\n", + "```python\n", + "def fjern_dup(liste):\n", + " ny_liste = [liste[0]] # Oppretter en ny liste hvor første element er det samme som i input\n", + " for tall in liste: # Går gjennom tallene i input-listen\n", + " if tall != ny_liste[-1]: # Hvis tallet ikke er lik det siste elementet i ny_liste\n", + " ny_liste.append(tall) #legg tallet bakerst i den nye listen\n", + " liste[:] = ny_liste # setter liste lik en ny versjon av ny_liste\n", + "\n", + "```\n", + "Merk spesielt tilordningen liste[:]. Dette gjør at liste-variabelen peker til samme sted i minnet *etter* tilordningen, og variabelen blir dermed endret. Hvis vi derimot hadde skrevet \n", + "```python\n", + "liste = ny_liste \n", + "```\n", + "så hadde referansen (id-en) endret seg, altså blitt lagret et nytt sted og hvis vi hadde kalt på liste etter funksjonen hadde kjørt hadde vi ikke sett noen endring i printout. \n", + "\n", + "Dette er nokså intrikat, men hovedbudskapet er å passe på og sette riktig tilordning. Dette kan dere teste i de følgende oppgavene." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### a)\n", + "\n", + "Lag en funksjon som tar inn en liste og fjerner elementene som er høyere enn gjennomsnittet. Merk at dette skal gjelde duplikater også. Eksempelvis skal list = [1,2,3,4,5,5,6,7] remove_larger_than_average(list) gjøre at listen etter funksjonskallet ser slik ut: [1, 2, 3, 4]. Merk at funksjonen ikke skal returnere noe." + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### b) \n", + "\n", + "\n", + "Lag en funksjon som tar inn en liste endrer listen slik at elementet ved siden av det opprinnelige elementet er kvadratet (tallet ^2). F.eks skal input [1,2,3,4] resultere i at listen ser slik ut etter kallet: [1,1,2,4,3,9,4,16]. Merk at funksjonen ikke skal returnere noe." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 1, 2, 4, 3, 9, 4, 16]\n" + ] + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Videre er det viktig å være obs på forskjellen mellom lister og tupler. Hovedforskjellen er at tupler er ikke-muterbare, altså at de ikke kan endres når de er opprettet. Du skal nå skrive om funksjonen larger_than_average(liste) slik at denne fungerer *både* for lister og tupler. Du kan nå returnere resultatet, i stedet for å endre inputargumentet slik som i a). I denne oppgaven er det *ikke* lov å konvertere input-argumentet til en liste hvis det er en tuppel." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Hint**: Du kan bruke funksjonen isinstance(argument,type) for å sjekke om et argument er av typen type. Husk også at hvis du skal initialisere en tuppel med ett element, så må du ha komma bak elemenetet, (1,) f.eks " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lectures/lecture4/notes/codes/generelt_om_lister.ipynb b/lectures/lecture4/notes/codes/generelt_om_lister.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..f94a8000d41b81765961e558d77162116cccd0b0 --- /dev/null +++ b/lectures/lecture4/notes/codes/generelt_om_lister.ipynb @@ -0,0 +1,236 @@ +{ + "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, + "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." + ] + } + ], + "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/lecture4/notes/codes/lister_og_lokker.ipynb b/lectures/lecture4/notes/codes/lister_og_lokker.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..23f69b40b3fbc5a7502d9e6c0b11c37680132632 --- /dev/null +++ b/lectures/lecture4/notes/codes/lister_og_lokker.ipynb @@ -0,0 +1,174 @@ +{ + "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**" + ] + } + ], + "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/lecture4/notes/codes/lister_og_set.ipynb b/lectures/lecture4/notes/codes/lister_og_set.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..503689821effe1794e5dc83c291c3ebf3c8ceea0 --- /dev/null +++ b/lectures/lecture4/notes/codes/lister_og_set.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lister og set\n", + "\n", + "**Læringsmål:**\n", + "\n", + "* Set\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Handleliste eksempel" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "({'Appelsin', 'Banana', 'Eple'},\n", + " {'Asparges', 'Gullrot', 'Purreløk', 'Salat'},\n", + " {'Kjøttdeig', 'Makaroni', 'Salt'})" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frukt_set = {'Banana', 'Appelsin', 'Eple'}\n", + "gronnsak_set = {'Gullrot','Asparges', 'Purreløk','Salat'}\n", + "div_set = {'Kjøttdeig', 'Makaroni', 'Salt'}\n", + "\n", + "(frukt_set, gronnsak_set, div_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Banana', 'Eple'}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "frukt_set.add('Eple')\n", + "frukt_set" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Banana', 'Eple'}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frukt_set.pop()\n", + "frukt_set" + ] + } + ], + "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" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lectures/lecture4/notes/codes/lister_og_tupler.ipynb b/lectures/lecture4/notes/codes/lister_og_tupler.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..ed254ec0c0d3a03fac251f95260f6733b7df19bb --- /dev/null +++ b/lectures/lecture4/notes/codes/lister_og_tupler.ipynb @@ -0,0 +1,154 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lister og tupler\n", + "\n", + "**Læringsmål:**\n", + "\n", + "* Lister\n", + "* Tupler\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Denne oppgaven handler om *muterende* endringer av lister, samt forskjellen mellom tupler og lister. Hovedpoenget med muterende endringer er at dette er endringer, f.eks i en funksjon som skal være permanente *etter* at funksjonen avsluttes. Eksempelet under illustrerer en vanlig fallgruve knyttet til dette:\n", + "\n", + "```python\n", + "lis1 = [1,2,3]\n", + "lis2 = lis1\n", + "lis3 = lis1[:]\n", + "lis1[0] = 2\n", + "print(lis2)\n", + "print(lis3)\n", + " \n", + "Out: [2, 2, 3]\n", + " [1, 2, 3]\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Handleliste eksempel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "frukt_liste = ['Banana', 'Appelsin', 'Eple']\n", + "gronnsak_liste = ['Gullrot','Asparges', 'Purreløk','Salat']\n", + "div_liste = ['Kjøttdeig', 'Makaroni', 'Salt']\n", + "\n", + "(frukt_liste, gronnsak_liste, div_liste)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "handleliste_1 = ['Handleliste for 08.04.2023',frukt_liste, gronnsak_liste, div_liste]\n", + "handleliste_2 = handleliste_1\n", + "handleliste_2[0] = 'Handleliste for 09.04.2023' # Handleliste_1 er også endret!\n", + "\n", + "(handleliste_1, handleliste_2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "handleliste_3 = handleliste_1[:] # 'Showllow' kopi\n", + "handleliste_3[0] = 'Handleliste for 11.04.2023' # Handleliste_1 blir ikke endret!\n", + "\n", + "(handleliste_1, handleliste_3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "handleliste_1[1].append('Druer')\n", + "\n", + "(handleliste_1, handleliste_3) #Handleliste_3 inneholder Druer også! (Pga showllow kopiering)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import copy\n", + "\n", + "handleliste_4 = copy.deepcopy(handleliste_1)\n", + "\n", + "handleliste_1[2].append('Tomat')\n", + "\n", + "(handleliste_1, handleliste_4)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tuper\n", + "\n", + "Er det samme som lister med den forskjellen at de ikke kan endres. Bruker paranteser når vi definerer dem" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "ukedager = ('mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag')\n", + "\n" + ] + } + ], + "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" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lectures/lecture4/notes/slides/lecture-4.md b/lectures/lecture4/notes/slides/lecture-4.md new file mode 100644 index 0000000000000000000000000000000000000000..bbd98a06fe168ecda46800d7dd37fb02f047742a --- /dev/null +++ b/lectures/lecture4/notes/slides/lecture-4.md @@ -0,0 +1,121 @@ +--- +marp: true +size: 4:3 +paginate: true +--- +<!-- https://marpit.marp.app/directives --> + +# Leksjon 4 + +**Læringsutbytte** + +* Lære å lage lister og manipulere elementene i en gitt liste. +* Slicing av lister + + +--- + +# Lister + +* For å opprette en tom liste i Python skriver vi [] +* Lister elementene kan være av forskjellige typer + +```python +min_liste = [4,'elementer','i','listen'] +``` + +Denne listen består av heltall (int) og strenger (str). + +--- + +# Lister og inneholde andre lister + +* Et element i en liste kan være en annen liste + +```python +frukt_liste = ['Banana', 'Appelsin', 'Eple'] +gronnsak_liste = ['Gullrot','Asparges', 'Purreløk','Salat'] +div_liste = ['Kjøttdeig', 'Makaroni', 'Salt'] + +handleliste = ['Handleliste for 08.04.2023',frukt_liste, gronnsak_liste, div_liste] + +handleliste[0] # Printer Handleliste for 08.04.2023 +handleliste[1] # Printer ['Banana', 'Appelsin', 'Eple'] +handleliste[1][2] # Printer Eple +``` + +--- +# Lister og løkker + +For å iterere/gå gjennom elementene i en liste brukes løkker, og dette gjøres hovedsakelig på to ulike måter: + +1. For-løkker, ved å bruke range()-funksjonen og indekser. + +```python +liste = [1,2,3,4,5] +for x in range(len(liste)): + print(liste[x]) +``` + +2. For-in-løkker, som henter ut ett og ett element av en liste. + +```python +liste = [1,2,3,4,5] +for x in liste: + print(x) +``` + +--- +# Kopiering av lister + +```python +frukt_liste = ['Banana', 'Appelsin', 'Eple'] +gronnsak_liste = ['Gullrot','Asparges', 'Purreløk','Salat'] +div_liste = ['Kjøttdeig', 'Makaroni', 'Salt'] + +handleliste_1 = ['Handleliste for 08.04.2023',frukt_liste, gronnsak_liste, div_liste] +handleliste_2 = handleliste_1 +handleliste_2[0] = 'Handleliste for 09.04.2023' # Handleliste_1 er også endret! + +handleliste_3 = handleliste_1[:] # 'Showllow' kopi +handleliste_3[0] = 'Handleliste for 09.04.2023' # Handleliste_1 blir ikke endret! + +handleliste_1[1].append('Druer') +handleliste_3 #Handleliste_3 inneholder Druer også! (Pga showllow kopiering) +``` + +--- +# Dyp kopiering + +Dyp kopiering kopierer også underliggende objekter (i motsetning til shallow som bare kopierer referanser til underliggende objekter) + +```python +import copy + +handleliste_4 = copy.deepcopy(handleliste_1) + +handleliste_1[2].append('Tomat') + +(handleliste_1, handleliste_4) +``` + +Her vil handleliste_4 ikke inneholde 'Tomat' + +--- +# Tupler + +Er det samme som lister med den forskjellen at de ikke kan endres. Bruker paranteser når vi definerer dem + +```python +ukedager = ('mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag') +``` + +Det er f.eks. ikke lov å skrive: +```python +ukedager[0] = 'tirsdag' +``` + +--- +# Set + +Er det samme som lister med den forskjellen at elementene kan forekomme bare en gang (unike verdier). Bruker krøll-paranteser når vi definerer dem diff --git a/lectures/lectures.ipynb b/lectures/lectures.ipynb index 0403775b00d9ba976f66416f2c64a3539fbf0982..281425f5984347ca0e54098c8c40670a21d273be 100644 --- a/lectures/lectures.ipynb +++ b/lectures/lectures.ipynb @@ -155,7 +155,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.2" }, "orig_nbformat": 4 }, diff --git a/lectures/lectures.json b/lectures/lectures.json index ac29853dad78e517587a171fc52a19c723924f93..512188c73a6ee2dec36bb63de8800b45ac38677f 100644 --- a/lectures/lectures.json +++ b/lectures/lectures.json @@ -35,8 +35,9 @@ ,{"Sammenligning": {"Sammenligning av strenger":"lecture2/notes/codes/sammenligning_av_strenger.ipynb"}} ,{ "Løkker": [ - {"For-løkke":""} - ,{"While-løkke":""} + {"Introduksjon til løkker":"lecture3/notes/codes/intro_til_lokker.ipynb"} + ,{"Mer om løkker":"lecture3/notes/codes/mer_om_lokker.ipynb"} + ,{"Nøstede løkker":"lecture3/notes/codes/nostede_lokker.ipynb"} ] } ,{"Lab 3": {"Lab-3":"lecture3/lab/lab-3.md"}} @@ -45,14 +46,10 @@ ,{ "Leksjon 4: Sammensatte datatyper (lister, tupler, set)": [ { - "Mer om løkker": {"":""} - } - ,{ "Sammensatte datatyper": [ - {"Lister":""} - ,{"Tupler":""} - ,{"Set":""} - ,{"Dictionaries":""} + {"Lister": {"Generelt om lister": "lecture4/notes/codes/generelt_om_lister.ipynb", "Lister og løkker": "lecture4/notes/codes/lister_og_lokker.ipynb"}} + ,{"Tupler":{"Generelt om tupler": "lecture4/notes/codes/lister_og_tupler.ipynb"}} + ,{"Set": {"Generelt om set": "lecture4/notes/codes/lister_og_set.ipynb"}} ] } ,{"Lab 4": {"Lab-4":"lecture4/lab/lab-4.md"}} diff --git a/lectures/lectures.md b/lectures/lectures.md index f4cc14c2c42412cb0071a0190cb018b534b0cfaa..654a07d835ec37b8e5cb9d121304ae747ab30110 100644 --- a/lectures/lectures.md +++ b/lectures/lectures.md @@ -53,11 +53,14 @@ <blockquote style="font-size:200%;cursor: pointer;padding: 10px;">   <a target="_blank" href=lecture2/notes/codes/sammenligning_av_strenger.ipynb>Sammenligning av strenger</a></blockquote> </details> <details><summary style="font-size:200%;cursor: pointer;">  Løkker</summary> -<details><summary style="font-size:200%;cursor: pointer;">   For-løkke</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    </blockquote> +<details><summary style="font-size:200%;cursor: pointer;">   Introduksjon til løkker</summary> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    lecture3/notes/codes/intro_til_lokker.ipynb</blockquote> </details> -<details><summary style="font-size:200%;cursor: pointer;">   While-løkke</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    </blockquote> +<details><summary style="font-size:200%;cursor: pointer;">   Mer om løkker</summary> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    lecture3/notes/codes/mer_om_lokker.ipynb</blockquote> +</details> +<details><summary style="font-size:200%;cursor: pointer;">   Nøstede løkker</summary> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    lecture3/notes/codes/nostede_lokker.ipynb</blockquote> </details> </details> <details><summary style="font-size:200%;cursor: pointer;">  Lab 3</summary> @@ -65,21 +68,16 @@ </details> </details> <details><summary style="font-size:200%;cursor: pointer;"> Leksjon 4: Sammensatte datatyper (lister, tupler, set)</summary> -<details><summary style="font-size:200%;cursor: pointer;">  Mer om løkker</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">   <a target="_blank" href=></a></blockquote> -</details> <details><summary style="font-size:200%;cursor: pointer;">  Sammensatte datatyper</summary> <details><summary style="font-size:200%;cursor: pointer;">   Lister</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    </blockquote> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    <a target="_blank" href=lecture4/notes/codes/generelt_om_lister.ipynb>Generelt om lister</a></blockquote> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    <a target="_blank" href=lecture4/notes/codes/lister_og_lokker.ipynb>Lister og løkker</a></blockquote> </details> <details><summary style="font-size:200%;cursor: pointer;">   Tupler</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    </blockquote> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    <a target="_blank" href=lecture4/notes/codes/lister_og_tupler.ipynb>Generelt om tupler</a></blockquote> </details> <details><summary style="font-size:200%;cursor: pointer;">   Set</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    </blockquote> -</details> -<details><summary style="font-size:200%;cursor: pointer;">   Dictionaries</summary> -<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    </blockquote> +<blockquote style="font-size:200%;cursor: pointer;padding: 10px;">    <a target="_blank" href=lecture4/notes/codes/lister_og_set.ipynb>Generelt om set</a></blockquote> </details> </details> <details><summary style="font-size:200%;cursor: pointer;">  Lab 4</summary>