diff --git a/ovingsforelesning/uke36/oppgaverLF.ipynb b/ovingsforelesning/uke36/oppgaverLF.ipynb new file mode 100644 index 0000000..349cfec --- /dev/null +++ b/ovingsforelesning/uke36/oppgaverLF.ipynb @@ -0,0 +1,727 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Øvingsforelesning 2 - TDT4109" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Logiske uttrykk, betingelser og if-setninger" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Eksempel\n", + "\n", + "### Ulike måter å formatere strenger på" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Value 1: Hello, value 2: 2\n", + "Value 1: Hello, value 2: 2\n", + "Value 1: Hello, value 2: 2\n", + "Value 1: Hello , value 2: 2\n" + ] + } + ], + "source": [ + "some_val = \"Hello\"\n", + "some_other_val = 2\n", + "\n", + "# F-strings\n", + "print(f\"Value 1: {some_val}, value 2: {some_other_val}\")\n", + "\n", + "# String concatenation (sammensetning)\n", + "print(\"Value 1: \" + some_val + \", value 2: \" + str(some_other_val))\n", + "\n", + "# .format()\n", + "print(\"Value 1: {}, value 2: {}\".format(some_val, some_other_val))\n", + "\n", + "# print med flere argumenter (automatiske mellomrom)\n", + "# Legg her merke til mellomrommet som kommer etter første verdi\n", + "print(\"Value 1:\", some_val, \", value 2:\", some_other_val)" + ] + }, + { + "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": 5, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/home/vetle/Programming/2024_TDT4109_forelesninger/Ovingsforelesning/OF2/oppgaver.ipynb Cell 7\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m tall2 \u001b[39m=\u001b[39m \u001b[39mint\u001b[39m(\u001b[39minput\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mTall2: \u001b[39m\u001b[39m\"\u001b[39m))\n\u001b[1;32m 4\u001b[0m minst \u001b[39m=\u001b[39m \u001b[39mmin\u001b[39m(tall1,tall2)\n\u001b[0;32m----> 6\u001b[0m \u001b[39mprint\u001b[39;49m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mminst\u001b[39m}\u001b[39;00m\u001b[39m er det minste tallet av \u001b[39m\u001b[39m{\u001b[39;00mtall1\u001b[39m}\u001b[39;00m\u001b[39m og \u001b[39m\u001b[39m{\u001b[39;00mtall2\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m)\n", + "\u001b[1;32m/home/vetle/Programming/2024_TDT4109_forelesninger/Ovingsforelesning/OF2/oppgaver.ipynb Cell 7\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m tall2 \u001b[39m=\u001b[39m \u001b[39mint\u001b[39m(\u001b[39minput\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mTall2: \u001b[39m\u001b[39m\"\u001b[39m))\n\u001b[1;32m 4\u001b[0m minst \u001b[39m=\u001b[39m \u001b[39mmin\u001b[39m(tall1,tall2)\n\u001b[0;32m----> 6\u001b[0m \u001b[39mprint\u001b[39;49m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mminst\u001b[39m}\u001b[39;00m\u001b[39m er det minste tallet av \u001b[39m\u001b[39m{\u001b[39;00mtall1\u001b[39m}\u001b[39;00m\u001b[39m og \u001b[39m\u001b[39m{\u001b[39;00mtall2\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m)\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1443\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:700\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1368\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1330\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:311\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2062\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2059\u001b[0m from_this_thread\u001b[39m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2061\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_threads_suspended_single_notification\u001b[39m.\u001b[39mnotify_thread_suspended(thread_id, stop_reason):\n\u001b[0;32m-> 2062\u001b[0m keep_suspended \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\n\u001b[1;32m 2064\u001b[0m frames_list \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 2066\u001b[0m \u001b[39mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2067\u001b[0m \u001b[39m# This means that we should pause again after a set next statement.\u001b[39;00m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2098\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2095\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2097\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2098\u001b[0m time\u001b[39m.\u001b[39;49msleep(\u001b[39m0.01\u001b[39;49m)\n\u001b[1;32m 2100\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[39mstr\u001b[39m(\u001b[39mid\u001b[39m(frame)))\n\u001b[1;32m 2102\u001b[0m \u001b[39m# process any stepping instructions\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "tall1 = int(input(\"Tall1: \"))\n", + "tall2 = int(input(\"Tall2: \"))\n", + "\n", + "minst = min(tall1,tall2)\n", + "\n", + "print(f\"{minst} er det minste tallet av {tall1} og {tall2}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Importere moduler\n", + "\n", + "Disse gjør begge det samme. I eksempel 1 vil alt som er importert kreve at man skriver `math` foran, men her importerer vi hele `math`-modulen. I eksempel 2 vil man kun importere `pi`, og `pi` vil fungere som en globalt tilgjengelig variabel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "print(math.pi)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from math import pi\n", + "print(pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 2: Repetisjon" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lag et program som gjør følgende:**\n", + "1. Ber om radius og høyde fra en bruker og lagrer dette i variabler \n", + "2. Regner ut volumet til en sylinder med denne høyden og radiusen\n", + "3. Skriver ut volumet med fem desimalers nøyaktighet" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Hint:* \n", + "* $V = \\pi r^2 h$\n", + "* `round(tall, desimaler)`" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "402.12386\n" + ] + } + ], + "source": [ + "from math import pi\n", + "\n", + "r = int(input(\"r: \"))\n", + "h = int(input(\"h: \"))\n", + "V = pi * r ** 2 * h\n", + "\n", + "print(round(V, 5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Boolske uttrykk" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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 3" + ] + }, + { + "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": [ + "False\n" + ] + } + ], + "source": [ + "a = int(input(\"a: \"))\n", + "b = int(input(\"b: \"))\n", + "c = int(input(\"c: \"))\n", + "\n", + "stemmer = a + b == c\n", + "print(stemmer)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Skriv et program som tar inn et tall og sjekker om det er et partall
\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": 13, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"tall1: \"))\n", + "erPar = tall1 % 2 == 0\n", + "print(erPar)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 5" + ] + }, + { + "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.
\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": 17, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "passord = \"itgk\"\n", + "gjett = input(\"passord: \")\n", + "riktig = passord.lower() == gjett.lower()\n", + "\n", + "print(riktig)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 6 " + ] + }, + { + "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
\n", + "\n", + "*Hint:*\n", + "* `if :`\n", + "\n", + "**Ekstraoppgave:**\n", + "* Print ut « er et oddetall» hvis det er oddetall\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/home/vetle/Programming/2024_TDT4109_forelesninger/Ovingsforelesning/OF2/oppgaver.ipynb Cell 29\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m erPar \u001b[39m=\u001b[39m tall1 \u001b[39m%\u001b[39m \u001b[39m2\u001b[39m \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m\n\u001b[1;32m 4\u001b[0m \u001b[39mif\u001b[39;00m erPar:\n\u001b[0;32m----> 5\u001b[0m \u001b[39mprint\u001b[39;49m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mtall1\u001b[39m}\u001b[39;00m\u001b[39m er partall\u001b[39m\u001b[39m\"\u001b[39m)\n", + "\u001b[1;32m/home/vetle/Programming/2024_TDT4109_forelesninger/Ovingsforelesning/OF2/oppgaver.ipynb Cell 29\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m erPar \u001b[39m=\u001b[39m tall1 \u001b[39m%\u001b[39m \u001b[39m2\u001b[39m \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m\n\u001b[1;32m 4\u001b[0m \u001b[39mif\u001b[39;00m erPar:\n\u001b[0;32m----> 5\u001b[0m \u001b[39mprint\u001b[39;49m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mtall1\u001b[39m}\u001b[39;00m\u001b[39m er partall\u001b[39m\u001b[39m\"\u001b[39m)\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1443\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:700\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1368\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1330\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:311\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2062\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2059\u001b[0m from_this_thread\u001b[39m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2061\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_threads_suspended_single_notification\u001b[39m.\u001b[39mnotify_thread_suspended(thread_id, stop_reason):\n\u001b[0;32m-> 2062\u001b[0m keep_suspended \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\n\u001b[1;32m 2064\u001b[0m frames_list \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 2066\u001b[0m \u001b[39mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2067\u001b[0m \u001b[39m# This means that we should pause again after a set next statement.\u001b[39;00m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2098\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2095\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2097\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2098\u001b[0m time\u001b[39m.\u001b[39;49msleep(\u001b[39m0.01\u001b[39;49m)\n\u001b[1;32m 2100\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[39mstr\u001b[39m(\u001b[39mid\u001b[39m(frame)))\n\u001b[1;32m 2102\u001b[0m \u001b[39m# process any stepping instructions\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "tall1 = int(input(\"tall1: \"))\n", + "erPar = tall1 % 2 == 0\n", + "\n", + "if erPar:\n", + " print(f\"{tall1} er partall\")\n", + "\n", + "if not erPar:\n", + " print(f\"{tall1} er oddetall\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 7 \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": 22, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dette er en match\n" + ] + } + ], + "source": [ + "ditt_navn = \"Mangrud\"\n", + "etternavn = input(\"Etternavn: \")\n", + "\n", + "likt = ditt_navn == etternavn\n", + "\n", + "if likt:\n", + " print(\"Dette er en match\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 8 \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.
\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": 24, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7 er større enn eller lik 4\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"Tall1: \"))\n", + "tall2 = int(input(\"Tall2: \"))\n", + "\n", + "if tall1 >= tall2:\n", + " print(f\"{tall1} er større enn eller lik {tall2}\")\n", + "else:\n", + " print(f\"{tall1} er mindre enn {tall2}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 9\n", + "Kjell trenger help til å bestemme hva han skal ha med til lunsj. Han har en regel han vil følge, men sliter med å huske den. Regelen er: \n", + "* På mandag, onsdag og fredag spiser han brødskive med geitost\n", + "* På 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": 27, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Du skal ha med rundstykke med salami\n" + ] + } + ], + "source": [ + "ukedag = input(\"ukedag: \")\n", + "\n", + "if ukedag == \"mandag\" or ukedag == \"onsdag\" or ukedag == \"fredag\":\n", + " print(\"Du skal ta med brødskive med geitost\")\n", + "else:\n", + " print(\"Du skal ha med rundstykke med salami\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 10\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 større enn tall2`”. \n", + "* Dersom `tall2` er større enn `tall1` skal programmet skrive ut ”`Tall1 er mindre enn tall2`”.\n", + "* Til slutt skal programmet skrive ut ”`Takk for denne gang`” \n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tall1 er 4 større enn tall2\n", + "Takk for denne gang\n" + ] + } + ], + "source": [ + "tall1 = int(input(\"tall1: \"))\n", + "tall2 = int(input(\"tall2: \"))\n", + "\n", + "if tall1 == tall2:\n", + " print(\"Gratulerer, tallene er like!\")\n", + "elif tall1 > tall2:\n", + " print(f\"Tall1 er {tall1 - tall2} større enn tall2\")\n", + "else:\n", + " print(f\"Tall1 er {tall2 - tall1} mindre enn tall2\")\n", + "\n", + "print(\"Takk for denne gang\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 11\n", + "Lag et program som tar inn en tekststreng fra brukeren. Ut i fra strengen kan følgende fire ting skje\n", + "
\n", + "1. Dersom strengen er lik `\"jeg jukser alltid\"` skal programmet skrive ut `”Juksing er ikke lov, prøv igjen senere” `\n", + "2. Ellers, dersom lengden på 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 på strengen med navn ”streng”. \n", + "3. Ellers, hvis strengen starter på `”hei”` og har mer enn 6 tegn skal programmet skrive ut `”Hei på deg også”`\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": 36, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dette var en streng med perfekt lengde\n" + ] + } + ], + "source": [ + "bruker_input = input(\"streng: \")\n", + "\n", + "if bruker_input == \"jeg jukser alltid\":\n", + " print(\"Juksing er ikke lov, prøv igjen senere\")\n", + "elif len(bruker_input) > 4 and len(bruker_input) < 10:\n", + " print(\"Dette var en streng med perfekt lengde\")\n", + "elif bruker_input.startswith(\"hei\") and len(bruker_input) > 6:\n", + " print(\"Hei på deg også\")\n", + "else:\n", + " print(\"Dette er en kjedelig streng\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 12\n", + "Lag et program som ber brukeren om et passord og sjekker om det er likt et passord som du har lagret i en variabel i koden.\n", + "\n", + "Hvis passordet er riktig, print `\"ACCESS GRANTED\"`, hvis ikke print `\"ACCESS DENIED\"`\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ACCESS GRANTED\n" + ] + } + ], + "source": [ + "passord = \"itgk\"\n", + "gjett = input(\"Passord: \")\n", + "\n", + "print(\"ACCESS\", \"GRANTED\" if passord == gjett else \"DENIED\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bonusoppgave\n", + "\n", + "Lag et program som spør brukeren hvor mye tid de sover hver dag.\n", + "\n", + " - Dersom brukeren svarer et tall over 24 skal du printe at de lyver.\n", + " - Dersom de ikke lyver skal du spørre hvor mange timer de bruker på skolen hver dag.\n", + " - Dersom summen av tiden de bruker på skole og søvn er over 24 timer skal de få beskjed om at de lyver. \n", + " - Dersom de ikke lyver skal de få et spørsmål om de jobber. \n", + " - Dersom de ikke jobber skal programmet printe ut hvor mye tid i døgnet som er igjen til fritid. \n", + " - Dersom de jobber må programmet spørre hvor mye tid de bruker på jobb hver dag.\n", + " - Dersom summen av jobb, skole og søvn er over 24 timer så lyver de, og da skal programmet si fra. \n", + " - Dersom de ikke lyver skal programmet printe ut hvor mye tid i døgnet som er igjen til fritid. \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Du har 10 timer fritid\n" + ] + } + ], + "source": [ + "bruker_sover = int(input(\"Hvor mye sover du hver dag: \"))\n", + "\n", + "if bruker_sover > 24:\n", + " print(\"Det er løgn\")\n", + "else:\n", + " bruker_skolen = int(input(\"Hvor mange timer bruker du på skolen? \"))\n", + " if bruker_sover + bruker_skolen > 24:\n", + " print(\"Det er løgn\")\n", + " else:\n", + " jobber = input(\"Jobber du?\")\n", + " if jobber == \"nei\":\n", + " print(f\"Du har {24 - bruker_sover - bruker_skolen} timer fritid\")\n", + " else:\n", + " tid_jobb = input(\"Hvor mye tid bruker du på jobb hver dag? \")\n", + " if bruker_sover + bruker_skolen + tid_jobb > 24:\n", + " print(\"Du lyver\")\n", + " else:\n", + " print(f\"Du har {24 - bruker_sover - bruker_skolen - tid_jobb} timer fritid\")" + ] + } + ], + "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.12" + }, + "vscode": { + "interpreter": { + "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}