Added Lecture 4
This commit is contained in:
		
							
								
								
									
										22
									
								
								.obsidian/workspace.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.obsidian/workspace.json
									
									
									
									
										vendored
									
									
								
							@@ -257,17 +257,17 @@
 | 
			
		||||
  },
 | 
			
		||||
  "active": "91b08793b1132c55",
 | 
			
		||||
  "lastOpenFiles": [
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/__pycache__/pylab.cpython-312.pyc",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info/WHEEL",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info/REQUESTED",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info/RECORD",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info/METADATA",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info/LICENSE",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info/INSTALLER",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib-3.9.2.dist-info",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/mpl_toolkits/mplot3d/tests/__pycache__/test_legend3d.cpython-312.pyc",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/mpl_toolkits/mplot3d/tests/__pycache__/test_axes3d.cpython-312.pyc",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/mpl_toolkits/mplot3d/tests/__pycache__/test_art3d.cpython-312.pyc",
 | 
			
		||||
    "Material/3.Lösungen_Extended_Applications.slides.html",
 | 
			
		||||
    "Material/wise_24_25/Folien/3.Lösungen_Extended_Applications.ipynb",
 | 
			
		||||
    "Material/wise_24_25/Folien/Untitled.ipynb",
 | 
			
		||||
    "Material/wise_24_25/Folien",
 | 
			
		||||
    "Material/wise_24_25/lernmaterial/4.NumPy_MatPlotLib.ipynb",
 | 
			
		||||
    "Material/wise_24_25/lernmaterial/3.Extended_Applications.ipynb",
 | 
			
		||||
    "Material/wise_24_25/lernmaterial/2.Tutorial.ipynb",
 | 
			
		||||
    "Material/wise_24_25/lernmaterial/1.Tutorial.ipynb",
 | 
			
		||||
    "Material/wise_24_25/3.Extended_Applications.ipynb",
 | 
			
		||||
    "Material/wise_24_25/2.Tutorial.ipynb",
 | 
			
		||||
    "Material/wise_24_25/1.Tutorial.ipynb",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/logo2.png",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/grace_hopper.jpg",
 | 
			
		||||
    "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/Minduka_Present_Blue_Pack.png",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7797
									
								
								Material/3.Lösungen_Extended_Applications.slides.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7797
									
								
								Material/3.Lösungen_Extended_Applications.slides.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -0,0 +1,334 @@
 | 
			
		||||
{
 | 
			
		||||
 "cells": [
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "id": "c3c41172-0fa4-4542-af74-5912b25dce09",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "slide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "source": [
 | 
			
		||||
    "# Lösungen Extended Applications"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "id": "0200f54c-1416-4e4b-bcb9-fbe781bff590",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "slide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "source": [
 | 
			
		||||
    "### Aufgabe\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "*3 Punkte*\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Schreibe einen Generator `square_count` mit einem Eingabeparameter `n`, welcher die Quadratzahlen von $1\\dots n^2$ ausgibt.\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Die Aufgabe gibt 0 Punkte, wenn die Funktion `square_count` kein Generator ist!\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Hinweis: Bei Eingabe von `5` soll die Ausgabe `1 4 9 16` sein."
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 4,
 | 
			
		||||
   "id": "b27328c4-e085-4783-8ea8-c45c62b63d9f",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "fragment"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "name": "stdout",
 | 
			
		||||
     "output_type": "stream",
 | 
			
		||||
     "text": [
 | 
			
		||||
      "Square Numbers from 0 to 1: 1\n",
 | 
			
		||||
      "Square Numbers from 0 to 2: 1 4\n",
 | 
			
		||||
      "Square Numbers from 0 to 3: 1 4 9\n",
 | 
			
		||||
      "Square Numbers from 0 to 4: 1 4 9 16\n",
 | 
			
		||||
      "Square Numbers from 0 to 5: 1 4 9 16 25\n"
 | 
			
		||||
     ]
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "def square_count(n: int) -> int:    \n",
 | 
			
		||||
    "    for i in range(1, n):\n",
 | 
			
		||||
    "        yield i*i\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "for n in range(2, 7):\n",
 | 
			
		||||
    "    print(f\"Square Numbers from 0 to {n-1}:\", *square_count(n))"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "id": "72f74416-f665-475f-a411-aa2ad5a9c257",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "slide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "source": [
 | 
			
		||||
    "### Aufgabe\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "*3 Punkte*\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Schreibe einen Generator `naturals`, welcher mit jedem Aufruf die nächste natürliche Zahl ausgibt. (Angefangen mit 1)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "- Es sind keine Eingabeparameter notwendig.\n",
 | 
			
		||||
    "- Ist die Funktion kein generator, wird diese Aufgabe mit 0 Punkten bewertet\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "*Hinweis*: Orientiere dich an dem Beispiel `faktoriel_gen`"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 6,
 | 
			
		||||
   "id": "e5023e1a-1ab0-42ec-87f2-87c2eee46274",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "fragment"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "import types"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 10,
 | 
			
		||||
   "id": "8769a98d-5ec0-407a-9ba0-538daff61597",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "fragment"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "name": "stdout",
 | 
			
		||||
     "output_type": "stream",
 | 
			
		||||
     "text": [
 | 
			
		||||
      "1, 2, 3, 4, 5, 6, 7, 8, 9, "
 | 
			
		||||
     ]
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "def naturals() -> int:\n",
 | 
			
		||||
    "    curr = 1\n",
 | 
			
		||||
    "    while 1:\n",
 | 
			
		||||
    "        yield curr\n",
 | 
			
		||||
    "        curr += 1\n",
 | 
			
		||||
    "        \n",
 | 
			
		||||
    "gen: types.GeneratorType = naturals()\n",
 | 
			
		||||
    "for i in range(1, 10):\n",
 | 
			
		||||
    "    number: int = next(gen)\n",
 | 
			
		||||
    "    print(number, end=', ')"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "id": "7514798b-d716-4161-a0b7-a644ac8bc67a",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "slide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "source": [
 | 
			
		||||
    "### Aufgabe\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "*6 Punkte*\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Schreiben Sie eine Dataclass `Student`\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "- Die dataclass soll die Werte `vorname`, `nachname`, `semester` und `mat_nr` speichern, vergebe hierzu selber den !!geeigneten!! Datentypen. Mache dir dazu Gedanken ob es Sinnvoll beispielweise die Semesteranzahl als Float zu speichern.\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "- importiere aus dem dataclasses modul die Funktion `asdict`, erstelle ein Objekt mit den Werten aus dem Beispielstundent, weiße den rückgabewert aus `asdict` aufgerufen mit dem Beispielstudenten der Variablen `stud` zu.\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "- Die Aufgabe wird mit 0 Punkten bewertet, wenn `Student` keine dataclass ist!\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "- Hat einer der Attribute keinen geeigneten Datentypen, führt dies nicht zu Punktabzug bei zwei oder mehr schon."
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "id": "e6d510b0-1565-489c-9441-1812153a3a9f",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "subslide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "source": [
 | 
			
		||||
    "Beispielstudent:\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "|Attribut|Wert|\n",
 | 
			
		||||
    "|-|-|\n",
 | 
			
		||||
    "|vorname|Martin|\n",
 | 
			
		||||
    "|nachname|Le|\n",
 | 
			
		||||
    "|mat_nr|520420|\n",
 | 
			
		||||
    "|semester|5|"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 24,
 | 
			
		||||
   "id": "36bd4680-e75e-4db0-9442-9c62f393608e",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "subslide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "name": "stdout",
 | 
			
		||||
     "output_type": "stream",
 | 
			
		||||
     "text": [
 | 
			
		||||
      "{'mat_nr': 520420,\n",
 | 
			
		||||
      " 'nachname': 'Le',\n",
 | 
			
		||||
      " 'semester': 5,\n",
 | 
			
		||||
      " 'vorname': 'Martin'}\n"
 | 
			
		||||
     ]
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "from dataclasses import dataclass, asdict\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "@dataclass\n",
 | 
			
		||||
    "class Student:\n",
 | 
			
		||||
    "    vorname: str\n",
 | 
			
		||||
    "    nachname: str\n",
 | 
			
		||||
    "    mat_nr: int\n",
 | 
			
		||||
    "    semester: int \n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "student = Student(\n",
 | 
			
		||||
    "            vorname='Martin',\n",
 | 
			
		||||
    "            nachname='Le',\n",
 | 
			
		||||
    "            mat_nr=520420,\n",
 | 
			
		||||
    "            semester=5)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "stud = asdict(student)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "from pprint import pprint\n",
 | 
			
		||||
    "pprint(stud, width=1)"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "id": "c1471211-26a2-4607-82de-9cc706cfc2fb",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "slide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "source": [
 | 
			
		||||
    "### Aufgabe\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "*6 Punkte*\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Gegeben sind zwei Listen `colorn` & `colorv_hex`, welche zueinander Index Sortiert sind.\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Schreiben nun eine Dataclass `Color` mit den Attributen `name` & `value` und vergebe geeignete Type Hints.\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "Erstelle danach eine Liste, welche die Werte aus `colorn` & `colorv_hex` in die Dataclass `Color` umwandeln, und speicher die Liste in der variablen `colors`.\n"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 17,
 | 
			
		||||
   "id": "2abd79b2-2083-422b-a83d-7cd3f03aa82c",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "fragment"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "colorn = ['RED', 'GREEN', 'BLUE', 'YELLOW', 'PURPLE']\n",
 | 
			
		||||
    "colorv_hex = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF']"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 25,
 | 
			
		||||
   "id": "9a82261a-a644-4118-a4f2-e663f10a75bd",
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "editable": true,
 | 
			
		||||
    "slideshow": {
 | 
			
		||||
     "slide_type": "subslide"
 | 
			
		||||
    },
 | 
			
		||||
    "tags": []
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "name": "stdout",
 | 
			
		||||
     "output_type": "stream",
 | 
			
		||||
     "text": [
 | 
			
		||||
      "[Color(name='RED', value='#FF0000'),\n",
 | 
			
		||||
      " Color(name='GREEN', value='#00FF00'),\n",
 | 
			
		||||
      " Color(name='BLUE', value='#0000FF'),\n",
 | 
			
		||||
      " Color(name='YELLOW', value='#FFFF00'),\n",
 | 
			
		||||
      " Color(name='PURPLE', value='#FF00FF')]\n"
 | 
			
		||||
     ]
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "colors = None\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "@dataclass\n",
 | 
			
		||||
    "class Color:\n",
 | 
			
		||||
    "    name: str\n",
 | 
			
		||||
    "    value: str\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "colors = [Color(n, w) for n, w in zip(colorn, colorv_hex)]\n",
 | 
			
		||||
    "    \n",
 | 
			
		||||
    "pprint(colors)"
 | 
			
		||||
   ]
 | 
			
		||||
  }
 | 
			
		||||
 ],
 | 
			
		||||
 "metadata": {
 | 
			
		||||
  "kernelspec": {
 | 
			
		||||
   "display_name": "Python 3 (ipykernel)",
 | 
			
		||||
   "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.12.7"
 | 
			
		||||
  }
 | 
			
		||||
 },
 | 
			
		||||
 "nbformat": 4,
 | 
			
		||||
 "nbformat_minor": 5
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2044
									
								
								Material/wise_24_25/lernmaterial/1.Tutorial.ipynb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2044
									
								
								Material/wise_24_25/lernmaterial/1.Tutorial.ipynb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1462
									
								
								Material/wise_24_25/lernmaterial/2.Tutorial.ipynb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1462
									
								
								Material/wise_24_25/lernmaterial/2.Tutorial.ipynb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1661
									
								
								Material/wise_24_25/lernmaterial/3.Extended_Applications.ipynb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1661
									
								
								Material/wise_24_25/lernmaterial/3.Extended_Applications.ipynb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user