From 75848b23f1871a06b471c0a62871d8d03de0fa8c Mon Sep 17 00:00:00 2001 From: Eirik Lorgen Tanberg <eirik@tanberg.org> Date: Mon, 11 Sep 2023 17:37:48 +0200 Subject: [PATCH] =?UTF-8?q?Legg=20til=20LF=20for=20=C3=98F2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ovingsforelesninger/OF2/solutions.ipynb | 565 ++++++++++++++++++++++++ 1 file changed, 565 insertions(+) create mode 100644 Ovingsforelesninger/OF2/solutions.ipynb diff --git a/Ovingsforelesninger/OF2/solutions.ipynb b/Ovingsforelesninger/OF2/solutions.ipynb new file mode 100644 index 0000000..e5e6c49 --- /dev/null +++ b/Ovingsforelesninger/OF2/solutions.ipynb @@ -0,0 +1,565 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Øvingsforelesning 2 - ITGK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Logiske uttrykk, betingelser og if-setninger" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Eksempel\n", + "Ulike mÃ¥ter Ã¥ formatere strenger pÃ¥" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 1: Repetisjon" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lag et program som gjør følgende:**\n", + "1. Spør om to tall fra brukeren og lagrer disse som variabler\n", + "2. Finner ut hvilket av tallene som er det minste\n", + "3. Skriver ut \"(z) er det minste tallet av (x) og (y)\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 er det minste tallet av 3 og 5\n", + "3 er det minste tallet av 3 og 5\n", + "3 er det minste tallet av 3 og 5\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"Skriv inn tall 1: \"))\n", + "tall2 = int(input(\"Skriv inn tall 2: \"))\n", + "\n", + "minste_tall = min(tall1, tall2)\n", + "\n", + "print(f\"{minste_tall} er det minste tallet av {tall1} og {tall2}\")\n", + "#print(str(minste_tall) + \" er det minste tallet av \" + str(tall1) + \" og \" + str(tall2))\n", + "#print(minste_tall, \"er det minste tallet av\", tall1, \"og\", tall2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Boolske uttrykk, prøv selv" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False\n", + "False\n", + "True\n" + ] + } + ], + "source": [ + "a = True\n", + "b = False\n", + "x = 23\n", + "y = 26\n", + "\n", + "z = x + 2 == y\n", + "print(z)\n", + "w = not ((a and b) or x != y)\n", + "print(w)\n", + "u = a is not b and ((y - 4) <= x)\n", + "print(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Skriv et program som gjør følgende:** \n", + "1. Spør en bruker om tre tall, ett om gangen\n", + "2. Sjekker om summen av de to første er lik det tredje\n", + "3. Skriver ut resultatet til bruker\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Hint:* \n", + "* `a + b == c`\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2 + 2 = 5: False\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"Skriv inn tall 1: \"))\n", + "tall2 = int(input(\"Skriv inn tall 2: \"))\n", + "tall3 = int(input(\"Skriv inn tall 3: \"))\n", + "\n", + "sum_lik = (tall1 + tall2) == tall3\n", + "\n", + "print(f\"{tall1} + {tall2} = {tall3}: {sum_lik}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Skriv et program som tar inn et tall og sjekker om det er et partall <br>\n", + "\n", + "*Hint:*\n", + "* Sjekk om resten er 0 nÃ¥r det deles pÃ¥ 2\n", + "\n", + "**Ekstraoppgave**\n", + "* Skriv ut om det er partall eller oddetall\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "52 er et partall: True\n" + ] + } + ], + "source": [ + "tall = int(input(\"Skriv inn et tall: \"))\n", + "\n", + "er_partall = tall % 2 == 0\n", + "\n", + "print(f\"{tall} er et partall: {er_partall}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lag et program som ber om et passord og sjekker om det er likt et passord som du har lagret i en variabel i koden. <br>\n", + "\n", + "*Hint:*\n", + "* a == b\n", + "* Start med Ã¥ opprette en variabel “passord†som inneholder passordet ditt.\n", + "\n", + "**Ekstraoppgave**\n", + "* Sjekk om det er likt uavhengig av smÃ¥ eller store bokstaver\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test\n", + "TEST\n", + "Er riktig passord: False\n" + ] + } + ], + "source": [ + "password = \"pass123\"\n", + "\n", + "attempt = input(\"Skriv inn passord: \")\n", + "\n", + "is_correct = password.lower() == attempt.lower()\n", + "\n", + "print(f\"Er riktig passord: {is_correct}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hei fra else\n", + "Hei 2\n" + ] + } + ], + "source": [ + "if False:\n", + " print(\"Hei\")\n", + "elif False:\n", + " print(\"Hei 3\")\n", + "elif False:\n", + " print(\"Hei 4\")\n", + "else:\n", + " print(\"Hei fra else\")\n", + "\n", + "print(\"Hei 2\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 5 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lag et program som tar inn et tall og skriver ut ` \"(tall) er et partall\"` hvis det er et partall <br>\n", + "\n", + "*Hint:*\n", + "* `if <logisk uttrykk>:`\n", + "\n", + "**Ekstraoppgave:**\n", + "* Print ut «<tall> er et oddetall» hvis det er oddetall\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4 er et partall\n" + ] + } + ], + "source": [ + "tall = int(input(\"Skriv inn et tall: \"))\n", + "\n", + "er_partall = tall % 2 == 0\n", + "\n", + "if er_partall:\n", + " type_tall = \"partall\"\n", + " #print(f\"{tall} er et partall\")\n", + "\n", + "if not er_partall:\n", + " type_tall = \"oddetall\"\n", + " #print(f\"{tall} er et oddetall\")\n", + "\n", + "print(f\"{tall} er et {type_tall}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 6 \n", + "Lag et program som spør om et etternavn. Hvis det er likt ditt etternavn skal det skrive ut `«Dette er en match!!»`" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dette er en match!!\n" + ] + } + ], + "source": [ + "etternavn = \"Tanberg\"\n", + "\n", + "gitt_etternavn = input(\"Skriv inn et etternavn: \")\n", + "\n", + "if etternavn.lower() == gitt_etternavn.lower():\n", + " print(\"Dette er en match!!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 7 \n", + "Lag et program som tar inn to tall. Programmet skal skrive ut `â€(tall1) er større enn eller lik (tall2)â€` eller`â€(tall1) er mindre enn (tall2)†`avhengig av tallene. <br>\n", + "\n", + "*Hint:*\n", + "* `tall1 > tall2`\n", + "\n", + "**Ekstraoppgave:**\n", + "* Utvid programmet til Ã¥ gi en spesiell beskjed dersom tallene er like\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 er lik 5\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"Skriv inn tall 1: \"))\n", + "tall2 = int(input(\"Skriv inn tall 2: \"))\n", + "\n", + "if tall1 >= tall2:\n", + " if tall1 == tall2:\n", + " print(f\"{tall1} er lik {tall2}\")\n", + " else:\n", + " print(f\"{tall1} er større enn {tall2}\")\n", + "else:\n", + " print(f\"{tall1} er mindre enn {tall2}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 8\n", + "Kjell trenger help til aÌŠ bestemme hva han skal ha med til lunsj. Han har en regel han vil følge, men sliter med aÌŠ huske den. Regelen er: \n", + "* PaÌŠ mandag, onsdag og fredag spiser han brødskive med geitost\n", + "* PaÌŠ tirsdag og torsdag spiser han rundstykke med salami\n", + "\n", + "Lag et program der Kjell kan skrive inn hvilken ukedag et er, og deretter fÃ¥ vite hva han skal ha til lunsj\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Brødskive med geitost\n" + ] + } + ], + "source": [ + "ukedag = input(\"Skriv inn hvilken ukedag det er: \")\n", + "ukedag = ukedag.lower()\n", + "\n", + "if ukedag in [\"mandag\", \"onsdag\", \"fredag\"]:\n", + " print(\"Brødskive med geitost\")\n", + "\n", + "if ukedag == \"tirsdag\" or ukedag == \"torsdag\":\n", + " print(\"Rundstykke med salami\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 9\n", + "<img src=\"../Resources/Images/if-setninger.jpg\" style=\"width: 500px;\">\n", + "\n", + "**Lage et program som gjør følgende:**\n", + "* Tar inn to tall (kalt `tall1` og `tall2`). \n", + "* Dersom de er like skal programmet skrive ut `â€Gratulerer, tallene er like†`\n", + "* Hvis `tall1` er større enn `tall2` skal det skrive ut â€`Tall1 er <differanse mellom tallene> større enn tall2`â€. \n", + "* Dersom `tall2` er større enn `tall1` skal programmet skrive ut â€`Tall1 er <differanse mellom tallene> mindre enn tall2`â€.\n", + "* Til slutt skal programmet skrive ut â€`Takk for denne gang`†\n" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tall1 er 2 mindre enn tall2\n", + "Takk for denne gang\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"Skriv inn tall 1: \"))\n", + "tall2 = int(input(\"Skriv inn tall 2: \"))\n", + "\n", + "if tall1 == tall2:\n", + " print(\"Gratulerer, tallene er like!\")\n", + "elif tall1 > tall2:\n", + " diff = tall1 - tall2\n", + " print(f\"Tall1 er {diff} større enn tall2\")\n", + "else:\n", + " diff = tall2 - tall1\n", + " print(f\"Tall1 er {diff} mindre enn tall2\")\n", + "\n", + "print(\"Takk for denne gang\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 10\n", + "\n", + "Lag et program som tar inn en tekststreng fra brukeren. Ut i fra strengen kan følgende fire ting skje\n", + "<br>\n", + "1. Dersom strengen er lik `â€IalwaysCheatâ€` skal programmet skrive ut `â€Juksing er ikke lov, prøv igjen senere†`\n", + "2. Ellers, dersom lengden paÌŠ strengen er større enn 4 og mindre enn 10 skal programmet skrive ut `â€Dette var en streng med perfekt lengdeâ€`. \n", + " * `len(streng)` gir lengden paÌŠ strengen med navn â€strengâ€. \n", + "3. Ellers, hvis strengen starter paÌŠ `â€heiâ€` og har mer enn 6 tegn skal programmet skrive ut `â€Hei paÌŠ deg ogsaÌŠâ€`\n", + " * Hint: streng.startswith(\"hei\") gir True hvis strengen starter med â€hei†\n", + "4. Ellers skal programmet skrive ut `â€Dette var en kjedelig strengâ€`\n" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dette var en kjedelig streng\n" + ] + }, + { + "data": { + "text/plain": [ + "'wijdawIJOD'" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "streng = input(\"Skriv inn en streng: \")\n", + "\n", + "if streng == \"IalwaysCheat\":\n", + " print(\"Juksing er ikke lov, prøv igjen senere\")\n", + "elif 4 < len(streng) < 10:\n", + " print(\"Dette var en streng med perfekt lengde\")\n", + "elif streng.startswith(\"hei\") and len(streng) > 6:\n", + " print(\"Hei pÃ¥ deg ogsÃ¥\")\n", + "else:\n", + " print(\"Dette var en kjedelig streng\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('tdt4195')", + "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.5" + }, + "vscode": { + "interpreter": { + "hash": "63b89d9bfc14eb4486c27c9b239bf0a08c4c63a21c176f83036370f0e204c130" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- GitLab