diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 8b14402..ae00620 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,14 +11,12 @@ "id": "85d70f5e9df52245", "type": "leaf", "state": { - "type": "markdown", + "type": "pdf", "state": { - "file": "Timetable.md", - "mode": "source", - "source": false + "file": "KC_Deutsch_HS_Anhrung.pdf" }, - "icon": "lucide-file", - "title": "Timetable" + "icon": "lucide-file-text", + "title": "KC_Deutsch_HS_Anhrung" } }, { @@ -227,26 +225,33 @@ }, "active": "85d70f5e9df52245", "lastOpenFiles": [ + "Material/wise_24_25/Folien/6.Lösungen_Monte_Carlo.html", + "Material/wise_24_25/6.Lösungen_Monte_Carlo.ipynb", + "Material/wise_24_25/Untitled.ipynb", + "Material/wise_24_25/lernmaterial/6.Monte_Carlo.ipynb", + "README.md", + "Timetable.md", + "KC_Deutsch_HS_Anhrung.pdf", + "Material/wise_24_25/lernmaterial/people_in_germany.csv", + "Material/wise_24_25/lernmaterial/Bees.csv", + "Material/env/lib/python3.12/site-packages/seaborn-0.13.2.dist-info/WHEEL", + "Material/env/lib/python3.12/site-packages/seaborn-0.13.2.dist-info/REQUESTED", + "Material/env/lib/python3.12/site-packages/seaborn-0.13.2.dist-info/RECORD", + "Material/env/lib/python3.12/site-packages/seaborn-0.13.2.dist-info/METADATA", + "Material/env/lib/python3.12/site-packages/seaborn-0.13.2.dist-info/LICENSE.md", "Lectures/17 18.02.2025.md", "Lectures/16 17.02.2025.md", - "Timetable.md", "Lectures/13 31.01.2025.md", "Lectures/12 24.01.2025.md", "Lectures/11 17.01.2025.md", "Lectures/10 10.01.2025.md", "Lectures/09 13.12.2024.md", "Lectures/10 03.01.2025.md", - "Material/SciPy_Lösungen.slides.html", - "Material/wise_24_25/lernmaterial/SciPy_Lösungen.ipynb", - "Material/wise_24_25/lernmaterial/Untitled.ipynb", - "Material/wise_24_25/lernmaterial/6.Monte_Carlo.ipynb", "Lectures/07 29.11.2024.md", "Lectures/06 22.11.2024.md", "Lectures/05 15.11.2024.md", "Gruppen/MeWi 1.md", "Lectures/27.11.2024.md", - "Material/wise_24_25/lernmaterial/5.SciPy.ipynb", - "Material/Untitled.ipynb", "Lectures/15 14.02.2025.md", "To Do.md", "Gruppen/Engineering 1.md", @@ -256,10 +261,6 @@ "Gruppen/MeWi 4.md", "Gruppen/MeWi 3.md", "Gruppen/MeWi 2.md", - "Material/3.Extended_Applications_Lösungen.html", - "Material/3.Lösungen_Extended_Applications.html", - "Material/wise_24_25/lernmaterial/2.Tutorial_2.ipynb", - "Material/wise_24_25/lernmaterial/1.Tutorial_1.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", @@ -269,9 +270,6 @@ "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg", "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots_large.png", "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.svg", - "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.png", - "Lectures/04 08.11.2024.md", - "Lectures/03 01.11.2024.md", - "Lectures/02 25.10.2024.md" + "Material/env/lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.png" ] } \ No newline at end of file diff --git a/KC_Deutsch_HS_Anhrung.pdf b/KC_Deutsch_HS_Anhrung.pdf new file mode 100644 index 0000000..dd2c8b3 Binary files /dev/null and b/KC_Deutsch_HS_Anhrung.pdf differ diff --git a/Material/2.vorlesung.ipynb b/Material/2.vorlesung.ipynb deleted file mode 100644 index fdb2070..0000000 --- a/Material/2.vorlesung.ipynb +++ /dev/null @@ -1,1863 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "53ef5460-e38f-4d51-92e3-7d680f23d710", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "# 2. Einführung in die Programmierung für Nicht Informatiker*innen" - ] - }, - { - "cell_type": "markdown", - "id": "391a0811-2a99-4cde-8b88-bd7e0c1d6cb8", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "source": [ - "Bitte ihre Jupyter Kennung + Vor- & Nachnamen unter folgendem link eintragen [survey](https://survey.cyperpunk.de/form/GVkRjB)" - ] - }, - { - "cell_type": "markdown", - "id": "c39f4116-a533-4d21-87e5-6d24268b995c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Beispiele Print" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "48342195-b5a8-4298-9f83-2908c8a52821", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hallo Python\n", - "Freitag 15h\n" - ] - } - ], - "source": [ - "# Beispiel Print\n", - "print(\"Hallo\", \"Python\", end='\\n') # Zeigen wie end Funktioniert\n", - "print(\"Freitag 15h\") # Ausgabe mittels print" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "d08902d2-e454-4f81-bd63-30ef9a33deb2", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Hallo Python'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"Hallo Python\" # direkte ausgabe einer Variablen oder Wert" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "63ac2349-5a3d-49f5-b379-ec92ff502694", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "432423654645" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "432423654645 " - ] - }, - { - "cell_type": "markdown", - "id": "0b230834-0e94-48ff-9462-5b627726db70", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Variablen zuweisungen" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "aa39464e-eaa1-4c8c-bd29-2ca20bc35336", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl1 = 42 # 'zahl1' speichert den Wert '42'\n", - "zahl1" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "45281ff8-2c07-4774-9f96-e95a5b8f31ae", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n" - ] - } - ], - "source": [ - "print(zahl1) # Ausgabe der Variabeln mittels print" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "c9e3bf85-5b75-4efc-bbcc-9c5de28be421", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "420" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl2 = 420\n", - "zahl2" - ] - }, - { - "cell_type": "markdown", - "id": "750a84cf-6528-4d1c-9e53-85da156d47a3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Operationen mit Integern (gilt auch für Floats)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "599a7dec-0e03-43a2-92df-a60777a33f03", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "462" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl1 + zahl2 # Addition" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "db143bf7-4d07-4a2b-b30a-b2f9054efeb6", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "-378" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl1 - zahl2 # Subtraction" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "3b96f637-a5a2-4188-9632-a99faf881f76", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "378" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl2 - zahl1 # Order matters" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "7dc56688-4dd5-441d-b9f1-2c17028338e6", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "17640" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl2 * zahl1 # Multiplikation" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "4cb21e7e-f77d-4c5d-afb4-4aa0e7e974e5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10.0" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl2 / zahl1 # Division" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7d941f53-9fa4-494a-9871-bf02ecad97b7", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "16" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2**4 # Exponentiation" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "0e6a2cae-c360-454c-a622-37e6fed45879", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "42.42" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "float1 = 42.42 # Fließkommzahl speichern\n", - "float1" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "d360fc12-dfff-498e-95b8-664648fb8442", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl2 // zahl1 # Ganzzahldivision" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "1813dd22-f4f0-499b-92aa-c5f5f95b8a6c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "42 % 2 # Modulo (Rest einer Division)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "87f97c26-4fa2-4192-ae5b-21a6adcb8aa4", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(21, 0)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "divmod(42, 2) # Kombinierte Built-in funktion, welche den Wert der Ganzzahldivision und den Rest berechnet" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "5a8948ca-8662-43f1-9a1e-cb9bec803380", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "21.0" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "42 / 2" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "f17cc46a-906e-4fe9-9c0a-5cb81e09bcc5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "42 % 2" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "a6d36974-b750-41e8-a0b3-a40fdba9f02c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.30000000000000004" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "0.1 + 0.2 # Addition von Floats sind nicht immer akkurat" - ] - }, - { - "cell_type": "markdown", - "id": "73b246a0-f6d9-4e19-9dc3-a5e25efd0c8c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Booleans" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "99e978bc-b40e-432a-81a0-801391760fb3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "0.1 + 0.2 == 0.3 # Nicht richtig aufgrund der unkorrekten binären darstellung von floats" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "fc761a8c-8988-4a20-81a1-28e33f11f138", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "True " - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "668ad1b3-741e-46fb-a3af-375861ecbd13", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "False" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "0b23648c-1a8a-44e9-9941-a5e0e8b80ffb", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "True + True # Bools sind auch nur Zahlen (True = 1, False = 0)" - ] - }, - { - "cell_type": "markdown", - "id": "da342349-6c33-4fc6-864f-7171ac6dd029", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Listen" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "1b91f589-8469-49cf-90ba-af14d638d8eb", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Hallo Python', 42, 10.1]" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l = [\"Hallo Python\", 42, 10.10] # Erstellen einer Liste mit 3 elementen\n", - "l" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "678973b3-81ad-48e2-8ab2-c1784440a91c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Hallo Python', 42, 10.1, 'Text']" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l.append(\"Text\") # Weiteres Element an die liste anfügen\n", - "l" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "0c68eb51-c5f1-4650-9032-31f77a72006f", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Hallo Python', 42, 10.1, 'Text']" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "e41e1c08-b570-4423-a220-c428512ab686", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10.1" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "g = l[2] # Zugriff auf das dritte Element der Liste\n", - "g" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "6a4dc400-c788-4105-a57d-c42a64bf8928", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Hallo Python'" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l[0] # Zugriff erstes element der Liste" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "174211ad-dda8-4d43-87a1-eee4d582c47c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l[-3] # Auff listen lässt sich auch 'rückwärts' zugreifen" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "8ed1b344-94d0-49d6-8662-ea81d33f9d8f", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Hallo Python', 42, 10.1]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l.remove('Text') # Einen Wert aus der Liste entfernen\n", - "l" - ] - }, - { - "cell_type": "markdown", - "id": "5e1f1661-cb9d-464f-be4a-51d838bde23d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Strings" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "a10e3b76-8b0c-4979-880c-cb5a86c1c42a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Tex\"t'" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str1 = 'Tex\"t' # String mit ''\n", - "str1" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "783b1c13-fe63-452c-8f0e-8dab0c1173ee", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "\"Text'2\"" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str2 = \"Text'2\" # String mit \"\"\n", - "str2" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "91a8fb1e-c9ba-4e37-81d4-fae62e30fc8c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\nHallo dies ist ein \\necht langer \\nnicht formattierter \\ntext!!!! \\' \"\\n\\n'" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Documentation Strings oder mehrzeillige Strings\n", - "str3 = '''\n", - "Hallo dies ist ein \n", - "echt langer \n", - "nicht formattierter \n", - "text!!!! ' \"\n", - "\n", - "'''\n", - "str3 # Ausgabe mit escape Characters" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "7fa2bc58-3cf0-4ecb-ba6e-ab0af08c2806", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Hallo dies ist ein \n", - "echt langer \n", - "nicht formattierter \n", - "text!!!! ' \"\n", - "\n", - "\n" - ] - } - ], - "source": [ - "print(str3) # \"Hübsche\" Ausgabe" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "430c663e-6320-45bb-85ac-3781394a4a37", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'x'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str1[2] # Strings sind auch nur Listen" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "e2f20468-3ea7-411e-9c72-e29d5a344fa2", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Tex\"t ist ein text'" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f\"{str1} ist ein text\" # F-String formatierung" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "58dc5f40-26df-45e8-9c36-319dce3a11cd", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Tex\"t ist ein text'" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"{} ist ein text\".format(str1) # Formatierung mittels format funktion" - ] - }, - { - "cell_type": "markdown", - "id": "8dc440b6-a8c3-43a5-937f-1748d6a23c41", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Tuples" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "cf0bd9a6-db63-4795-847f-b6dbd0cd4d1e", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(42, 10.1)" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tuple1 = (42, 10.10) # Tuple erstellen\n", - "tuple1 " - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "6a6c1c1e-ea17-4609-82c8-2fa02b05b208", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tuple1[0] # auf element des Tupels zugreifen" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "a46ec0e4-0cb3-419b-ac9e-9f2a669812b0", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'tuple' object has no attribute 'append'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[40], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtuple1\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mappend\u001b[49m(\u001b[38;5;241m1\u001b[39m) \u001b[38;5;66;03m# Tuples sind unveränderlich (immutable) daher können nicht einfach elemente angefügt werden\u001b[39;00m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'append'" - ] - } - ], - "source": [ - "tuple1.append(1) # Tuples sind unveränderlich (immutable) daher können nicht einfach elemente angefügt werden" - ] - }, - { - "cell_type": "markdown", - "id": "448e1ab1-b51e-4577-a51d-da985079bb11", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Dictionarys" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "eb6815fd-755f-49e0-a9c3-71e28b1096c3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Name': 'Phil', 'Key': 42}" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict1 = {\"Name\": \"Phil\", \"Key\": 42} # Dictionary erstellen\n", - "dict1" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "3a00b7f8-910b-4261-9b49-cee2fefab2ec", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "42" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict1[\"Key\"] # Zugriff auf element des Dicts mittels Schlüssel" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "9128089a-d000-4cb3-87e3-524a53a93b84", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Name': 'Phil', 'Key': 42, 'Key2': 10}" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict1[\"Key2\"] = 10 # neues Element in das Dict einfügen\n", - "dict1" - ] - }, - { - "cell_type": "markdown", - "id": "ea00b1d5-b0fa-4949-8d51-09b045f4d25b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Sets" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "07a6f887-1831-42db-a81f-69ec41b6489b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{1, 2, 3, 4}" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "set1 = {1, 1, 2, 2, 3, 3, 4} # Set erstellen\n", - "set1 # Sets haben ausschließlich einzigartige Elemente " - ] - }, - { - "cell_type": "markdown", - "id": "729cb47d-ae3c-4317-b19e-c423b1f1fc9a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Conditionals" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "23dc654e-7434-4e41-8286-c9fa86aa2fae", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "42 % 2 == 0 # Prüfen auf equality" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "50757a7f-d3a2-43ba-9c59-f2b122661717", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ist Gerade\n" - ] - } - ], - "source": [ - "# Unterschiedlichen Code ausführen je nach Bedingung\n", - "zahl = 32\n", - "if zahl % 2 == 1: # ist die zahl Gerade?\n", - " print(\"Ist Ungerade\") # Wenn Ja\n", - "else:\n", - " print(\"Ist Gerade\") # Wenn Nein" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "645f5df9-8ade-4cf3-aa7f-6bf642d53674", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ist Gerade\n" - ] - } - ], - "source": [ - "# Argument \"verneinen\"\n", - "zahl = 32\n", - "if not zahl % 2 == 1: # Ist die zahl nicht gerade?\n", - " print(\"Ist Gerade\") # Wenn Ja (Zahl nicht gerade -> Zahl gerade)\n", - "else:\n", - " print(\"Ist Ungerade\") # Wenn Nein " - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "40d8928e-365b-4c73-a852-b13b507d7b2f", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "if 42 % 2 == 0 and 36 % 2 == 1: # Und verknüpfung alle bedingungen müssen wahr sein\n", - " print(\"Sind beide Gerade\")" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "082f72fe-8ced-4acd-bd51-0b7bec7195a7", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "True and False" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "0f911f39-056d-42bb-abfb-521fb926a1b1", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Eine Zahl ist Gerade\n" - ] - } - ], - "source": [ - "if 42 % 2 == 0 or 36 % 2 == 1: # Oder Verknüpfung eine oder mehrere Bedingungen müssen wahr sein\n", - " print(\"Eine Zahl ist Gerade\")" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "e8b94c36-e921-455a-80ae-a9f6e38a6d57", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "True or False" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "e828d799-89af-4991-bdc7-39d70dd30614", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "False or False" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "db94bbb7-c422-4566-beea-d5d606825563", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "True or True" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "1a7093bc-a4ce-4fbd-97c0-f93570a185c7", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Zahl ist durch 5 glatt teilbar\n" - ] - } - ], - "source": [ - "# Verschiedene Bedingungen mit verschiedenen Ausgaben\n", - "zahl = 10\n", - "\n", - "if zahl % 3 == 0: # zahl durch 3 teilbar?\n", - " print(\"Zahl ist durch 3 glatt teilbar\")\n", - "elif zahl % 5 == 0: # Zahl durch 5 teilbar?\n", - " print(\"Zahl ist durch 5 glatt teilbar\")\n", - "else: # Weder noch (Base Case)\n", - " print(\"Zahl ist nicht durch 3 oder 5 teilbar\")" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "eaa7e654-59b0-4ce4-80bf-f3ec83382663", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "zahl = 90.0\n", - "isinstance(zahl, float) # Prüfen ob eine variable einem der Datentypen entspricht (hier float)" - ] - }, - { - "cell_type": "markdown", - "id": "dfb03801-ad4f-4006-837e-e6d62f36a02a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Funktionen" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "e031a4f3-b42b-4a18-872c-1241a920b842", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def f(x): # Einleiten einer Funktion\n", - " ''' Berechnet das quadrat einer Zahl''' # Docstring zum beschreiben der Funktion\n", - " # .... irgendeine Berechnung\n", - " rückgabewert = x*x # ist der rückgabewert\n", - " return rückgabewert #" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "0f92364f-c666-485b-be38-d293cc167f17", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "49" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f(7)" - ] - }, - { - "cell_type": "markdown", - "id": "173dd25d-f83c-4dc9-847b-8d4a6f9ba4b7", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## While Loops" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "17722b1d-0491-451f-b130-01b89ee960cf", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Hallo Python\n", - "1 Hallo Python\n", - "2 Hallo Python\n", - "3 Hallo Python\n", - "4 Hallo Python\n", - "5 Hallo Python\n", - "6 Hallo Python\n", - "7 Hallo Python\n", - "8 Hallo Python\n", - "9 Hallo Python\n" - ] - } - ], - "source": [ - "i = 0 # Condition\n", - "while i < 10: # Prüfung\n", - " print(i, \"Hallo Python\")\n", - " i = i + 1 # Anpassung" - ] - }, - { - "cell_type": "markdown", - "id": "974862d5-8279-4277-9008-726c45e392a3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## 99 Bootles of Beer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "89075c38-1487-4175-8841-3546c8ac304f", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "# Vereinigung aller heute gelernten Dinge außer der Funktions Definition\n", - "\n", - "# 99 Bootles of Beer \n", - "beer = 99\n", - "while beer > -1:\t\n", - " print()\n", - " if beer == 0:\n", - " print('''\n", - " No more bottles of beer on the wall, no more bottles of beer.\n", - " We've taken them down and passed them around;\n", - " now we're drunk and passed out!\n", - " ''')\n", - " elif beer == 1:\n", - " print(beer, \"bottle of beer on the wall,\", beer, \"bottle of beer.\")\n", - " print(\"Take one down and pass it around, no more bottles of beer on the wall.\", end='')\n", - " else:\n", - " print(beer, \"bottles of beer on the wall,\", beer, \"bottles of beer.\")\n", - " if beer - 1 == 1:\n", - " print(f\"Take one down and pass it around, {beer - 1} bottle of beer on the wall.\") \n", - " else:\n", - " print(f\"Take one down and pass it around, {beer - 1} bottles of beer on the wall.\")\n", - " \n", - " beer -= 1\n", - "\n", - "# Ausgabe ist zu groß für Slides" - ] - } - ], - "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 -} diff --git a/Material/3.Vorlesung.ipynb b/Material/3.Vorlesung.ipynb deleted file mode 100644 index 1971ced..0000000 --- a/Material/3.Vorlesung.ipynb +++ /dev/null @@ -1,916 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "87873422-9971-47b4-870b-82ea5cc663f2", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "# Lösungen Tutorial 1" - ] - }, - { - "cell_type": "markdown", - "id": "373d0d4a-c11a-4fe3-b3f2-46701690fd3a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe**: Geben Sie den Text `Hallo Python` aus. *1 Punkt*" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "bedcc819-ea7e-430e-ba1b-32543086d2dd", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hallo Python\n" - ] - } - ], - "source": [ - "print(\"Hallo Python\")" - ] - }, - { - "cell_type": "markdown", - "id": "612aa876-5806-4ae8-96d7-578b96e1780a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *2 Punkte*: \n", - "\n", - "Definieren Sie zunächst die zwei Variablen `a` und `b` und initialisieren diese mit einem Integerwert ungleich `0`:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "fe38d9d9-9684-4d63-afe5-6eb68accf26d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "a = 1\n", - "b = -2" - ] - }, - { - "cell_type": "markdown", - "id": "bd7c915d-03b1-4c45-820b-6e2b12e81671", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *2 Punkte*:\n", - "\n", - "Definieren Sie zwei Variablen `s` und `t` und initialisieren diese mit einem Floatwert ungleich `0`:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6065bb38-0482-42b9-bd57-b0660de9eb7a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "s = 1.5\n", - "t = -2.7" - ] - }, - { - "cell_type": "markdown", - "id": "87ddb6c9-5291-4693-a3e1-65ce8c0a3ea4", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *2 Punkte*:\n", - "\n", - "Addieren Sie die Werte der Variablen `a` und `b` und speichern Sie das Ergebnis in der Variable `c`:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "424e3dbe-ead5-4606-a1bc-6b0bb0739b40", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "-1" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "c = a + b\n", - "c" - ] - }, - { - "cell_type": "markdown", - "id": "c57e8354-bde5-4139-bf93-ceca856568fc", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *5 Punkte*:\n", - "\n", - "Nutzen Sie die Variablen `a` & `b` und Speichern Sie die Ergebnisse für die Multiplikation, Division, Ganzzahldivision, Exponentiation und den Modulo-Operator in den unten angegebenen Variablen:\n", - "\n", - "\\begin{align}\n", - "m &= a\\cdot b\\\\\n", - "d &= \\frac{a}{b}\\\\\n", - "i &= \\lfloor\\frac{a}{b}\\rfloor\\\\\n", - "e &= a^b\\\\\n", - "r &= a\\; \\textrm{mod}\\; b\n", - "\\end{align}" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c2078093-fd22-4fc2-9c79-11e716d047b1", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "m = a*b\n", - "d = a/b\n", - "i = a//b\n", - "e = a**b\n", - "r = a%b" - ] - }, - { - "cell_type": "markdown", - "id": "04ffad98-7f3c-40df-984a-021a2ad79800", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *2 Punkte*:\n", - "\n", - "Ein String-Objekt (Text) können sie mit Hilfe von `'Some Text'` oder `\"Some Text2\"` definieren. Definieren sie die Variable `text` mit einem beliebigen Text." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "68cb274d-dba5-49e8-a26e-cfb97499792f", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Hi Mom, I am on TV!'" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "text = \"Hi Mom, I am on TV!\"\n", - "print(text)" - ] - }, - { - "cell_type": "markdown", - "id": "9dcb699b-091d-4d17-9e22-f958a34872b5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Geben Sie die Variablen `a` & `b` aus Aufgabe 1 im format `\"a = 12 und b = 12\"` (Die Werte sollen dann den Werten aus ihrer Definition entsprechen. 12 ist hier nur ein Beispiel) aus." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "745dda45-be87-4f55-a18a-fda0031148ba", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = 1 und b = -2\n" - ] - } - ], - "source": [ - "# 1. Möglichkeit Format Funktion\n", - "print(\"a = {} und b = {}\".format(a, b))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "579bc33a-9b26-428d-a4b8-cfb0a0960ff5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = 1 und b = -2\n" - ] - } - ], - "source": [ - "# 2. Möglichkeit 'f'-String\n", - "print(f\"a = {a} und b = {b}\")" - ] - }, - { - "cell_type": "markdown", - "id": "df713414-9909-4130-b349-352cc8d951ed", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*: \n", - "\n", - "Definieren Sie die Variable `l` und weisen Sie dieser Variable eine Liste mit aufsteigenden Integerwerten von `0` bis `4` zu." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "0371e614-f9d1-4048-a710-531b4bea7708", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "l = [0, 1, 2, 3, 4]" - ] - }, - { - "cell_type": "markdown", - "id": "41220c65-8c6b-486d-9da7-cecdce957ef3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Hängen Sie der Liste `l` noch den Wert `42` an.\n", - "\n", - "Hinweis: Nutzen Sie dafür die Methode [.append](https://www.w3schools.com/python/ref_list_append.asp)." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "5f14b238-738e-4f37-9f80-b09b373bc387", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "l.append(42)" - ] - }, - { - "cell_type": "markdown", - "id": "007e4252-a8c5-464e-8a71-bda2718b6c5e", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Geben Sie das dritte Element der Liste `l` aus.\n", - "\n", - "Hinweis: Achten Sie darauf das der erste Index immer `0` ist. " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "b5f1c844-9017-459a-aebf-fabd639310d9", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l[2]" - ] - }, - { - "cell_type": "markdown", - "id": "478993a1-d922-4f3c-bde7-316e01688709", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Geben Sie das vorletzte Element der Liste `l` aus.\n", - "\n", - "Hinweis: Achten Sie darauf das der letzte Index mit `-1` ausgegeben wird" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "f38d72ab-062e-4204-86dc-32864ef9cf5d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l[-2]" - ] - }, - { - "cell_type": "markdown", - "id": "d19f6acb-8046-4a7b-b0b9-78fe655246dc", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Initialisieren Sie die Dictionary Variable `my_dict` mit folgendem Mapping:\n", - "\n", - "| Key | Value |\n", - "|:----|:------|\n", - "| `\"apple\"` | `\"Apfel\"` |\n", - "| `\"banana\"` | `\"Banane\"` |\n", - "| `\"cherry\"` | `\"Kirsche\"` |" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "4faaf2df-a250-41b2-aa26-d3e6a7327f01", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "my_dict = {\"apple\": \"Apfel\", \"banana\": \"Banane\", \"cherry\": \"Kirsche\"}" - ] - }, - { - "cell_type": "markdown", - "id": "74939a92-ed87-44d8-894a-b6d5d5a05773", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Fügen Sie nun das Key-Value Paar `\"pear\": \"Birne\"` zu `my_dict` hinzu." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "0cfbda9f-e6fe-4145-b4a4-05e6c9cdd576", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "my_dict[\"pear\"] = \"Birne\"" - ] - }, - { - "cell_type": "markdown", - "id": "e5e4cd89-f01e-44df-91b7-7b255f5c4b67", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Geben Sie die nur die Werte des Dictionaries `my_dict` aus." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "d0166c7e-6a45-461b-9369-53de7ccc7e8b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Apfel', 'Banane', 'Kirsche', 'Birne'])\n" - ] - } - ], - "source": [ - "print(my_dict.values())" - ] - }, - { - "cell_type": "markdown", - "id": "7691cbcc-8af1-41be-9b01-e499d9981b48", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Geben Sie die Elemente des Dictionaries `my_dict` mit der Funktion `.items()` aus. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "a4f9f233-6f60-4d5d-a4ea-2f8be73be3d5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_items([('apple', 'Apfel'), ('banana', 'Banane'), ('cherry', 'Kirsche'), ('pear', 'Birne')])\n" - ] - } - ], - "source": [ - "print(my_dict.items())" - ] - }, - { - "cell_type": "markdown", - "id": "44035bd1-3721-4510-aadc-b464f45e66a8", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Recap" - ] - }, - { - "cell_type": "markdown", - "id": "1aa5ee93-7aba-4ae2-9a7f-77b133d0762b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "```python\n", - "def some_function_name(param1, param2):\n", - " a = do_something1(param1)\n", - " b = do_something2(a, param2)\n", - " do_something3(b)\n", - " return b\n", - "```\n", - "\n", - "\"gebe zurück\" = `return`\n", - "\"gebe aus\" = `print`" - ] - }, - { - "cell_type": "markdown", - "id": "6095807e-03f2-42d0-89b8-54356206bd79", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Schreibe eine Funktion `successor` die auf jede Eingabe `+1` rechnet." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "58784328-5d18-45e7-8283-226391292461", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "43" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def successor(n):\n", - " return n+1\n", - "\n", - "successor(42)" - ] - }, - { - "cell_type": "markdown", - "id": "c792960f-f678-43f6-ba52-9e6904ec9077", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Schreibe eine Funktion `add` mit den Eingabeparametern `a` & `b`, welche die Werte von `a` & `b` miteinander addiert." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "b49b07e2-b2b6-4dc6-8ad7-32e4722616e9", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "7" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def add(a,b):\n", - " return a+b\n", - "\n", - "add(2,5)" - ] - }, - { - "cell_type": "markdown", - "id": "a94076aa-259b-44ee-9ee4-e239089d04fe", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** *1 Punkte*:\n", - "\n", - "Schreibe eine Funktion `is_odd` mit einem Eingabeparameter `n` die prüft ob die eingegebene Zahl ungerade ist.\n", - "\n", - "Wenn die Zahl gerade ist gebe den Text `\"Gerade Zahl\"` und bei ungerade `\"Ungerade Zahl\"` zurück." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "e5f9cd1d-3bd7-49ff-9ea7-53899db1d911", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gerade Zahl\n", - "Ungerade Zahl\n" - ] - } - ], - "source": [ - "def is_odd(n):\n", - " if n % 2 == 0:\n", - " return \"Gerade Zahl\"\n", - " else:\n", - " return \"Ungerade Zahl\"\n", - "\n", - "print(is_odd(2))\n", - "print(is_odd(3))" - ] - }, - { - "cell_type": "markdown", - "id": "b65cb60c-34ad-40eb-b0b6-934abaab3bb6", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "**Aufgabe** 7 Punkte: Schreibe eine Funktion `fubar` mit Eingabeparameter `n`.\n", - "Die Funktion soll wie folgt definiert sein:\n", - "\n", - "- Der Eingabeparameter `n` ist ein Integer, Floats geben `False` zurück\n", - "- Negative zahlen & 0 beenden die Funktion und geben `False` zurück\n", - "- Die Funktion zählt bis einschließlich dem Eingabeparameter\n", - " bsp.: $n=9 \\rightarrow 1, 2, 3, \\dots, 9$\n", - "- Bei jedem Schleifendurchlauf soll die Zahl bei der sich die Schleife gerade befindet mittels `print` ausgegeben werden werden.\n", - "- Ist der zurzeitige Schleifendurchlauf durch `3` teilbar, gebe mittels `print` denn String `Foo` aus.\n", - "- Ist der zurzeitige Schleifendurchlauf durch `5` teilbar, gebe mittels `print` denn String `Bar` aus.\n", - "- Ist der zurzeitge Schleifendurrchlauf durch `3 & 5` teilbar, gebe mittels `print` den String `FooBar` aus.\n", - "\n", - "**Tipp**: Implementiere nicht alles aufeinmal sollte Schritt für Schritt und teste deine Lösung nach jedem Schritt." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "bec1be94-561e-4379-86a0-d302ef150920", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def fubar(n: int):\n", - " if isinstance(n, float) or n < 1:\n", - " return False\n", - "\n", - " count = 1\n", - " while count <= n:\n", - " msg = count\n", - " if count % 3 == 0:\n", - " msg = \"Foo\"\n", - " if count % 5 == 0:\n", - " msg = \"Bar\"\n", - " if count % 15 == 0:\n", - " msg = \"FooBar\"\n", - " \n", - " count += 1\n", - " print(msg, end=', ')" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "ad665bb0-9976-43e9-b8ab-bb52c4a0f1d4", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Negative Zahl False\n", - "Null False\n", - "Float False\n", - "Testen über 15\n", - "1, 2, Foo, 4, Bar, Foo, 7, 8, Foo, Bar, 11, Foo, 13, 14, FooBar, 16, " - ] - } - ], - "source": [ - "# Testen\n", - "print(\"Negative Zahl\", fubar(-1))\n", - "print(\"Null\", fubar(0))\n", - "print(\"Float\", fubar(0.1))\n", - "print(\"Testen über 15\")\n", - "fubar(16)" - ] - } - ], - "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 -} diff --git a/Material/Tutorial2_Lösungen.ipynb b/Material/Tutorial2_Lösungen.ipynb deleted file mode 100644 index 010627a..0000000 --- a/Material/Tutorial2_Lösungen.ipynb +++ /dev/null @@ -1,532 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "1486c477-e52f-492a-a699-4f6668f43826", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "
\n", - "
\n", - "

Lösungen Tutorial 2

\n", - "
\n", - " \n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "89c3ed2f-6f9b-4d5c-adeb-482b4fd83b2b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe \n", - "\n", - "*3 Punkte*\n", - "\n", - "Schreibe eine Funktion `sum_up` mit Eingabeparameter `n`, welcher die Zahlen von `1...n` aufsummiert.\n", - "\n", - "Nutze dafür einen `for-loop`.\n", - "\n", - "**Beispiel**:\n", - "\n", - "$$n = 5$$ \n", - "$$sum\\_up(5) \\rightarrow 1 \\rightarrow 1 + 2 = 3 \\rightarrow 3 + 3 = 6 \\rightarrow 6 + 4 = 10 \\rightarrow 10 + 5 = 15$$\n", - "\n", - "Hinweis: die Funktion `range()` zählt standardmässig von `0...n-1`. Schauen Sie sich gerne dazu die offizielle Dokumentation an [PEP 204](https://peps.python.org/pep-0204/#list-ranges)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "d6de90ca-1db9-4c59-a5a4-42016370cb35", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "15" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def sum_up(n: int) -> int:\n", - " count = 0\n", - " for i in range(1,n+1):\n", - " count += i\n", - " return count\n", - "\n", - "sum_up(5)" - ] - }, - { - "cell_type": "markdown", - "id": "7a9de268-09e4-45e5-8aa9-db5ae79e9540", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "source": [ - "Es gibt immer einen besseren weg.\n", - "\n", - "Nach Gauß:\n", - "\n", - "$$\\sum_{k=1}^n k = 1 + 2 + 3 + \\dots + n = \\frac{n(n+1)}{2}$$" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd8eea02-c356-4906-8db8-ae4cdaf4f97c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "15" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# nach Gauß\n", - "def sum_up(n: int) -> int:\n", - " return int(n*(n+1)/2)\n", - "\n", - "sum_up(5)" - ] - }, - { - "cell_type": "markdown", - "id": "ea73e1ec-7b2a-4293-b269-03b8054aaa54", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe\n", - "\n", - "*2 Punkte*\n", - "\n", - "Ihnen ist das Dictionary `dict2` gegeben. Ändern Sie jeden Wert in dem Dictionary nach der Formel $f(x) = x^3-1$ mittels `for-loop`.\n", - "\n", - "Tipp: Lassen Sie sich nicht von den Schlüsseln verwirren." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "2a3e9cac-49ee-49f0-88da-a75e9611f1d8", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 56, 5: 12, 'python': 9, 3.14: 1.141414}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Vorgegeben\n", - "dict2 = {\"a\": 56, 5: 12, \"python\": 9, 3.14: 1.141414}\n", - "dict2" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "26aa9f7b-b5e8-4f8f-a0d0-b796b253ad71", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "subslide" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 175615, 5: 1727, 'python': 728, 3.14: 0.48706374396146557}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Kurze Lösung mittels Dictionary Comprehension\n", - "dict2 = {key: value**3-1 for key, value in dict2.items()}\n", - "dict2" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "4f625aaf-a04b-4c08-b18b-915b61c0145c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 175615, 5: 1727, 'python': 728, 3.14: 0.48706374396146557}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Lange Übersichtliche Lösung\n", - "for key, value in dict2.items():\n", - " dict2[key] = dict2[key]**3 - 1\n", - "dict2" - ] - }, - { - "cell_type": "markdown", - "id": "c4a7b4a9-7cbd-4127-8832-fdd7c3541409", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Zusatzaufgabe \n", - "\n", - "*Keine Punkte*\n", - "\n", - "Erstellen Sie eine List mittels List Comprehension, welche die Zahlen `1...6` auf deren kubische Zahl `1...216` also der Funktion $f(x) = x^3$ abbildet." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f8e84221-f7da-474a-aa14-bcf7d1d3a201", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 8, 27, 64, 125, 216]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cubics = [n**3 for n in range(1,7)]\n", - "cubics" - ] - }, - { - "cell_type": "markdown", - "id": "3cdbb5b7-f828-48eb-ba49-09d5ae68c2d7", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe\n", - "\n", - "*2 Punkte*\n", - "\n", - "Erstellen und Öffnen sie eine Datei `testfile.txt` mit der `open` Funktion, nutzen Sie dafür das `with`-Statement.\n", - "\n", - "Schreiben Sie in diese Datei 100 mal den String `\"Python\\n\"`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "90875b44-8209-498a-ad38-063772588711", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "with open('testfile.txt', 'w') as f:\n", - " for _ in range(100):\n", - " f.write(\"Python\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "c69ac8e9-34ef-413a-a39f-7db6a830cde3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe\n", - "\n", - "*2 Punkte*\n", - "\n", - "Öffnen Sie die zuvor erstellte Datei `testfile.txt` im Lesemodus und weißen Sie den Inhalt der `.readlines()` Funktion der Variabeln `lines` zu. " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "a8395ec5-59dc-43e3-a59d-9dea7cf1f21d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Anzahl der gelesenen Zeilen: 100\n" - ] - } - ], - "source": [ - "lines = None # vorgegeben\n", - "with open('testfile.txt', 'r') as f:\n", - " lines = f.readlines()\n", - "\n", - "print(\"Anzahl der gelesenen Zeilen:\", len(lines))" - ] - }, - { - "cell_type": "markdown", - "id": "00561f0d-9d9f-45bd-bf1f-824f04edf795", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe\n", - "\n", - "*3 Punkte*\n", - "\n", - "Importiere Python Built-In Library `random` und rufe zuerst aus dem Modul die Funktion `seed` auf mit dem Eingabewert `42`, und weiße danach der Variable `rand` den Wert des Funktionsaufrufes von `randint(1,100)` zu. " - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "63c44277-581a-426c-8e2d-ed911688ca91", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "82" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rand = None # vorgegeben\n", - "import random\n", - "random.seed(42)\n", - "rand = random.randint(1,100)\n", - "rand" - ] - }, - { - "cell_type": "markdown", - "id": "78ec5791-46b7-4693-b276-7f5e73a18eb7", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe\n", - "\n", - "*1 Punkt*\n", - "\n", - "Importieren Sie die Built-In Library `datetime` als `dt`." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "e3f4fe99-5980-4c2a-be4e-ae777f4bbb3d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2024-11-08 11:58:43.750641\n" - ] - } - ], - "source": [ - "import datetime as dt\n", - "print(dt.datetime.now())" - ] - }, - { - "cell_type": "markdown", - "id": "d1bf6ca3-4f96-456e-a8e9-34d9fd081c5b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "### Aufgabe\n", - "\n", - "*2 Punkte*\n", - "\n", - "Importieren Sie die Funktion `sqrt` aus dem Built-In Modul `math`.\n", - "Berechnen Sie $\\sqrt4$. Speichern Sie das Ergebnis in der variablen `s4`." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "eed3fc0f-67c1-43d5-ac2f-f6b7646aecdd", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from math import sqrt\n", - "s4 = sqrt(4)\n", - "s4" - ] - } - ], - "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.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/Material/Untitled.ipynb b/Material/Untitled.ipynb deleted file mode 100644 index e8600fc..0000000 --- a/Material/Untitled.ipynb +++ /dev/null @@ -1,122 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "d74e7711-ed1a-4749-8827-2e6fa5798d68", - "metadata": {}, - "outputs": [], - "source": [ - "def lcg (a,c,m, startwert):\n", - "\n", - " if a<=0 or c<0 or m<=0 or startwert <0:\n", - " return None #prüfung der werte \n", - " \n", - " x = startwert \n", - " while 1:\n", - " x=(a*x+c)%m\n", - " yield x " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "2993ac89-2be8-4c61-a6e2-43a1008f2d36", - "metadata": {}, - "outputs": [], - "source": [ - "def lcg_test(seed: int, scalar: int, modulus: int, offset: int) -> int:\n", - " assert modulus > 0, \"Modulus must be greater than 0\"\n", - " assert 0 <= scalar and scalar < modulus, \"Scalar must be in range 0 <= a < m\"\n", - "\n", - " while seed > 1:\n", - " seed = (scalar*seed+offset) % modulus\n", - " assert seed >= 0\n", - " yield seed" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "02a21a6d-0892-44f0-b0fd-6e5f8fe83962", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Lcg using Cocktailshaker Numbers: 3089810780120156248\n", - "Correct should be: 3089810780120156248\n", - "\n", - "Lcg using Cocktailshaker Numbers: 8356396685252565260\n", - "Correct should be: 8356396685252565260\n", - "\n", - "Lcg using Cocktailshaker Numbers: 1921117399837525548\n", - "Correct should be: 1921117399837525548\n", - "\n", - "Lcg using Cocktailshaker Numbers: 14806858147081821235\n", - "Correct should be: 14806858147081821235\n", - "\n", - "Lcg using Cocktailshaker Numbers: 2557599628047639428\n", - "Correct should be: 2557599628047639428\n", - "\n", - "Lcg using Cocktailshaker Numbers: 16453652254840064460\n", - "Correct should be: 16453652254840064460\n", - "\n", - "Lcg using Cocktailshaker Numbers: 15995401842808378843\n", - "Correct should be: 15995401842808378843\n", - "\n", - "Lcg using Cocktailshaker Numbers: 681272290641816305\n", - "Correct should be: 681272290641816305\n", - "\n", - "Lcg using Cocktailshaker Numbers: 10955466795170118648\n", - "Correct should be: 10955466795170118648\n", - "\n", - "Lcg using Cocktailshaker Numbers: 13714992071537968180\n", - "Correct should be: 13714992071537968180\n", - "\n" - ] - } - ], - "source": [ - "s = lcg(3203021881815356449, 11742185885288659963, 2**64-1, 3935559000370003845)\n", - "t = lcg_test(3935559000370003845, 3203021881815356449, 2**64-1, 11742185885288659963)\n", - "\n", - "for _ in range(10):\n", - " stud = next(s)\n", - " instructor = next(t)\n", - " print(\"Lcg using Cocktailshaker Numbers:\", stud)\n", - " print(\"Correct should be:\", instructor, end='\\n\\n')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "40aeb297-aeb5-4fca-8ae4-cb84c7f13957", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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 -} diff --git a/Material/V3.ipynb b/Material/V3.ipynb deleted file mode 100644 index fb2a52c..0000000 --- a/Material/V3.ipynb +++ /dev/null @@ -1,1063 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d32905fd-8062-49a1-a284-efbfbc48d00b", - "metadata": {}, - "source": [ - "# 3. Vorlesung" - ] - }, - { - "cell_type": "markdown", - "id": "a21df6bb-f501-474a-9e1a-7dd2a90cd92d", - "metadata": {}, - "source": [ - "### Einfache Zählschleife" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "52207bf8-c854-4249-a011-741cc6f57283", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n" - ] - } - ], - "source": [ - "# Als While Loop\n", - "count = 1 # Zählvariable\n", - "while count < 4: # Bedingung\n", - " print(count)\n", - " count += 1 # Hochzählen" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "cfc37791-5b75-4c51-ae76-a21f306821e0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n" - ] - } - ], - "source": [ - "# Als For Loop\n", - "for count in [1, 2, 3]:\n", - " print(count)" - ] - }, - { - "cell_type": "markdown", - "id": "daaa7cbe-0cb7-45c9-89a8-241561908db2", - "metadata": {}, - "source": [ - "Beispiel einer Zählschleife in C:\n", - "\n", - "```C\n", - "for (int i = 0; i < 4, i++) {}\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3e461857-f366-46f8-ad51-9800348b4521", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n" - ] - } - ], - "source": [ - "# Zählschleife mittels range Funktion\n", - "for count in range(1,4):\n", - " print(count)" - ] - }, - { - "cell_type": "markdown", - "id": "b572967d-7488-4be7-b8b7-8b0237eddc86", - "metadata": {}, - "source": [ - "`range` kann bis zu 3 Parameter nehmen.\n", - "\n", - "- 1 Parameter `range(4)` -> Zählt in 1er Schritten bis exklusive der eingegebenen Zahl *0,1,2,3*\n", - "\n", - "Der folgend genutzte Stern `*` sagt Python er soll den `iterator` entpacken." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "30d52051-cee6-4bcd-a622-c70bdd0cae1e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 1 2 3\n" - ] - } - ], - "source": [ - "print(*range(4))" - ] - }, - { - "cell_type": "markdown", - "id": "8e2dbb80-5bfd-43ee-83b6-8ef299c70391", - "metadata": {}, - "source": [ - "- 2 Parameter `range(1,4)` -> Zählt in 1er Schritten von dem ersten Parameter bis exklusiv zum zweiten Parameter *1,2,3*" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "fe434e93-729b-466c-a530-125c668f2329", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 2 3\n" - ] - } - ], - "source": [ - "print(*range(1,4))" - ] - }, - { - "cell_type": "markdown", - "id": "7d5d28a6-b873-4a2b-8e45-b02e75982c10", - "metadata": {}, - "source": [ - "- 3 Parameter `range(1,11,2)` -> Zählt in `2`er Schritten von dem ersten Parameter bis exklusiv zum zweiten Parameter " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "03e36a0d-9d0f-4dcd-8e02-3d234da9fb52", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 3 5 7 9\n" - ] - } - ], - "source": [ - "print(*range(1,11,2))" - ] - }, - { - "cell_type": "markdown", - "id": "698e2a24-d96e-4f39-b76a-bfa2b6d20297", - "metadata": {}, - "source": [ - "`For-Loops` itertieren über Iteratoren. Listen sind z.b. Iteratoren." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "4f4d9b6c-c262-45a0-ab7a-ac8d3f13d110", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 2, 3, 4]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "l = [0, 1, 2, 3, 4]\n", - "l" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "fbcb9b7d-2850-41fe-82a5-09ad75191329", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "4\n" - ] - } - ], - "source": [ - "for el in l:\n", - " print(el)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c1cb9b0a-170c-4b45-b329-e28b0f8ee818", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(l) # Anzahl 'Länge' der Liste l" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "f595c1f5-4945-4ee4-89e7-cde25d2a7e41", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "4\n" - ] - } - ], - "source": [ - "# range zählt bis 'exklusive' seines Eingabeparameters um folgendes verhalten zu emulieren\n", - "for i in range(len(l)):\n", - " print(i)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "6902e5e5-0a49-4bce-a03a-f4c4d812ffa7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "4\n" - ] - } - ], - "source": [ - "# Iteration über die Indexe der Liste \n", - "for i in range(len(l)):\n", - " print(l[i]) # Zugriff über Index auf die Elemente der Liste" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "4e2f0c81-894d-424d-848f-3e7cc36bd70b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello\n", - "Hello\n", - "Hello\n", - "Hello\n", - "Hello\n", - "Hello\n" - ] - } - ], - "source": [ - "# _ wird verwendet für Loops die einfach etwas immer und immer wiederholen sollen\n", - "for _ in range(6):\n", - " print(\"Hello\")" - ] - }, - { - "cell_type": "markdown", - "id": "c555a1d3-dc65-43e1-b19a-070653a34645", - "metadata": {}, - "source": [ - "Folgende Dict beispiele Eklären sich dementsprechend selber" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e1fbf047-ed8c-4a27-9729-6b05ed55140a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 5, 'b': 8, 'c': 10}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = {\"a\": 5, \"b\": 8, \"c\": 10}\n", - "d" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "faf3bea9-a308-4317-8a5d-ba4281a86671", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_values([5, 8, 10])" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d.values()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "52262d79-76d2-4bf4-8f06-8ed55dcff7cc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wert: 5\n", - "Wert: 8\n", - "Wert: 10\n" - ] - } - ], - "source": [ - "for el in d.values():\n", - " print(f\"Wert: {el}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "280eb1d9-bfe8-4715-a54a-4b40ef542618", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Key: a\n", - "Key: b\n", - "Key: c\n" - ] - } - ], - "source": [ - "for key in d.keys():\n", - " print(f\"Key: {key}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "7a0fde62-9fa8-4089-b257-d2a2263b2b0d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Key: a mit Wert: 5\n", - "Key: b mit Wert: 8\n", - "Key: c mit Wert: 10\n" - ] - } - ], - "source": [ - "# Items gibt eine Liste mit tupeln zurück, jedes tuple wird in seine Elemente zerlegt und den Variablen k & v zugewiesen\n", - "for k, v in d.items():\n", - " print(f\"Key: {k} mit Wert: {v}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "dc988e8a-135d-483f-9ae0-d20cc861c558", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 4, 9, 16, 25]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Liste füllen\n", - "squared = []\n", - "for i in range(6):\n", - " squared.append(i*i)\n", - "squared" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "94f148fb-a1f3-4bd9-82b0-baa3ad0b9d35", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 4, 9, 16, 25]" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# List Comprehension \n", - "sq = [n**2 for n in range(6)]\n", - "sq" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "3e6d5db7-3cc1-4b21-9ad0-4d3402b4765b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Dict füllen\n", - "di = {}\n", - "for n in range(6):\n", - " di[n] = n**2\n", - "di" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "6bd693d3-8e27-48c2-9fe4-8ecafb98b181", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Dictionary Comprehension\n", - "dic = {n: n**2 for n in range(6)}\n", - "dic" - ] - }, - { - "cell_type": "markdown", - "id": "bf09cbc2-c2c5-4f59-8ad7-c7c5e9e50f63", - "metadata": {}, - "source": [ - "## System Interaction" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "af2dfb75-e7b5-40c9-804f-d1c8fca9d6e0", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - " 4\n" - ] - }, - { - "data": { - "text/plain": [ - "'4'" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "input()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "43939109-c7e5-4583-8a8d-bc12c03163e6", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - " 6\n" - ] - } - ], - "source": [ - "text = input()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "d023c299-89a4-4c13-8c6e-aae4feae9004", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'6'" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "text" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "c6e009bc-954d-4bc6-81eb-98efbc82024a", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Gebe bitte eine Zahl ein: 7\n" - ] - }, - { - "data": { - "text/plain": [ - "'7'" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "input(\"Gebe bitte eine Zahl ein:\")" - ] - }, - { - "cell_type": "markdown", - "id": "60afb4f7-e8c5-431e-a592-b9b719f9b68c", - "metadata": {}, - "source": [ - "## File Handling" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "d47d956b-f131-4c4c-acad-4adc5ff1508e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<_io.TextIOWrapper name='test.txt' mode='r' encoding='UTF-8'>" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f = open('test.txt') # Öffne File und gebe den Handler an f, Standard im Lesemodus\n", - "f" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "4d38875a-18f9-4ad6-991b-fc61ea1dd08a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Super Secret Message\\n', 'Hallo Welt\\n', 'Geiler Kurs\\n', 'Freitag 15h yeah']" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f.readlines() # Lese den Inhalt aus f" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "1c0610b1-b6c2-430f-94c0-e50def936b16", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<_io.TextIOWrapper name='data.txt' mode='w' encoding='UTF-8'>" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data = open('data.txt', 'w') # Öffne eine beschreibare File\n", - "data" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "1b74ffb0-487a-4ec7-9ed1-3e51b5c76450", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "18" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.write(\"Ich will nachhause\") # Schreibe in die File " - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "f831efc1-b548-4a49-bbed-62c8018ecdfe", - "metadata": {}, - "outputs": [], - "source": [ - "# Schliese die Files\n", - "f.close()\n", - "data.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "4580acb8-cc79-440c-a463-140547883ded", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Super Secret Message\\n', 'Hallo Welt\\n', 'Geiler Kurs\\n', 'Freitag 15h yeah']\n" - ] - } - ], - "source": [ - "# Standard File handling\n", - "f = open('test.txt')\n", - "print(f.readlines())\n", - "f.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "50f35e0c-5138-478c-abe9-dae163c467a4", - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "I/O operation on closed file.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[33], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadlines\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# File ist geschlossen also ist lesen nicht möglich\u001b[39;00m\n", - "\u001b[0;31mValueError\u001b[0m: I/O operation on closed file." - ] - } - ], - "source": [ - "f.readlines() # File ist geschlossen also ist lesen nicht möglich" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "999e5179-4d96-4b8b-bec6-3f8b0a857291", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Super Secret Message\\n', 'Hallo Welt\\n', 'Geiler Kurs\\n', 'Freitag 15h yeah']\n" - ] - }, - { - "ename": "ValueError", - "evalue": "I/O operation on closed file.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[35], line 6\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(f\u001b[38;5;241m.\u001b[39mreadlines())\n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m# File ist bereits geschlossen \u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadlines\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Wirft Fehler\u001b[39;00m\n", - "\u001b[0;31mValueError\u001b[0m: I/O operation on closed file." - ] - } - ], - "source": [ - "# Contexte nehmen einem die Arbeit ab\n", - "with open('test.txt', 'r') as f:\n", - " print(f.readlines())\n", - "\n", - "# File ist bereits geschlossen \n", - "f.readlines() # Wirft Fehler" - ] - }, - { - "cell_type": "markdown", - "id": "d63dce40-9d51-4ab6-92e6-65fedb982dd8", - "metadata": {}, - "source": [ - "# Importing" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "f92c73ed-c02b-4142-ac27-25f22caaa199", - "metadata": {}, - "outputs": [], - "source": [ - "import math" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "a911de4f-f9c9-4098-8369-d4f97efab684", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "7513811c-18e9-4cab-9edf-8f383be21027", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.141592653589793" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.pi" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "254a6fab-a259-4379-a3e3-8f11560b87d7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.1622776601683795" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.sqrt(10)" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "15c63d11-6da3-4c44-a579-16a2f6cbe499", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "math.sqrt(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "c4c97328-95dd-4e6b-bc9c-857ee5d04e25", - "metadata": {}, - "outputs": [], - "source": [ - "from math import sqrt" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "1f29d236-0368-4fd4-97c1-a33a6adc7bf3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sqrt" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "5d5a0a0d-bb66-49ad-bcee-2656afc7af47", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "9.486832980505138" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sqrt(90)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "b83a73fe-8f6e-4b22-97bc-c9016206a6bd", - "metadata": {}, - "outputs": [], - "source": [ - "from math import * # Böse nicht mache führt nur zu unerklärbaren Fehlern" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "d1568734-9077-4444-9c0e-5dbf385dc46a", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "718bb6e9-1cda-438d-909a-b51064471d0a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "np.float64(94.86832980505137)" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.sqrt(9000)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "806082c4-61fc-4345-bd85-aa4deec1414a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np" - ] - } - ], - "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 -} diff --git a/Material/V4.ipynb b/Material/V4.ipynb deleted file mode 100644 index a877ec3..0000000 --- a/Material/V4.ipynb +++ /dev/null @@ -1,637 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "80fd796e-f42e-4940-89ae-e7359be4d10a", - "metadata": {}, - "source": [ - "# 4 Vorlesung" - ] - }, - { - "cell_type": "markdown", - "id": "cb2fcdfe-257a-4736-b9c2-5fa17d63fd1b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "## Generatoren\n", - "```python\n", - "def ():\n", - " # do something\n", - " yield \n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "0ea7c66c-439c-4a3b-a154-3449c2a799a1", - "metadata": {}, - "source": [ - "### Endliche Generatoren" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "d5465edd-a13d-4fa0-a805-30c35a384d54", - "metadata": {}, - "outputs": [], - "source": [ - "# Matrikelnummer generator\n", - "import random \n", - "def mat_nr_gen(anzahl: int) -> float:\n", - " for _ in range(anzahl):\n", - " yield random.randint(500_000, 700_000) # Generator weil yield" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "48109f19-47d2-45a1-bd03-9eccb4d25372", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sem_3 = mat_nr_gen(5) # generator erstellen\n", - "sem_3" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "413bbbf6-87c8-41ff-8680-a70e8456d865", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "559540" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "next(sem_3) # Nächsten Wert des Generators" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "14a1220d-ae0c-428b-bd51-564e66e55854", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "606586" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "next(sem_3) # ..." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "af75146c-e727-41e8-b496-695b93a68a56", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "503048\n", - "648312\n", - "629536\n", - "556597\n", - "512158\n" - ] - } - ], - "source": [ - "for _ in range(5):\n", - " print(next(sem_3)) # 5 mal den generator aufrufen" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "4691aa5c-0e3d-4dff-93c1-835a805e20e9", - "metadata": {}, - "outputs": [ - { - "ename": "StopIteration", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mStopIteration\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[19], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msem_3\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mStopIteration\u001b[0m: " - ] - } - ], - "source": [ - "next(sem_3) # Generator hat keine Werte mehr -> Fehler" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "6790f776-4201-403f-b95d-d789a4fe3a6f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "591325\n", - "582340\n", - "622867\n", - "653166\n", - "531169\n", - "538806\n", - "571659\n" - ] - } - ], - "source": [ - "for mat_nr in mat_nr_gen(7): # For loop übernimmt die komplette Arbeit\n", - " print(mat_nr)" - ] - }, - { - "cell_type": "markdown", - "id": "4cfbb732-c412-4ded-8f33-75a9917b0df1", - "metadata": {}, - "source": [ - "### Unendliche Generatoren" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "b2b3c678-a775-4213-9a73-4d3aa48eff5e", - "metadata": {}, - "outputs": [], - "source": [ - "# Seriennummer generator\n", - "def serial_nr_gen() -> int:\n", - " while True: # \"Führe unendlich of aus\"\n", - " yield random.randint(1000, 2000) # Generator weil yield" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e6ba3c92-465c-487d-a936-a155ad713784", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1940\n", - "1748\n", - "1342\n", - "1463\n", - "1100\n", - "1748\n", - "1158\n", - "1577\n", - "1321\n", - "1949\n" - ] - } - ], - "source": [ - "ser_gen = serial_nr_gen() # Generator erstellen\n", - "for _ in range(10):\n", - " print(next(ser_gen)) # 10 mal den generator abfragen" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c015d2c3-238b-454a-b75e-f81a19f89a79", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1281" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "next(ser_gen) # Diesmal kein Fehler da Generator kein Ende hat" - ] - }, - { - "cell_type": "markdown", - "id": "cd8ed607-c0e0-481c-aaa7-cf07e8c97051", - "metadata": {}, - "source": [ - "## Type Hints" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "9f564549-70d7-4538-a3fd-7158514fa0d4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{2.0: 2.0, 'HI': 'HI', 9: 9, True: True}\n", - "0.0 \n" - ] - } - ], - "source": [ - "# Beispielfunktion\n", - "\n", - "# Type hints zeigen dem Programmierer welche Datentypen erwartet werden\n", - "def useless(p1: int, p2: float, p3: bool, p4: str) -> dict: \n", - " return {p1: p1, p2: p2, p3: p3, p4: p4}\n", - "\n", - "print(useless(2.0, \"HI\", 9, True)) # Aufruf mit \"Falschen\" Datentypen\n", - "\n", - "# Beispielvariablen:\n", - "zahl: int = 0.0 # Zahl ist ein Float\n", - "print(zahl, type(zahl))" - ] - }, - { - "cell_type": "markdown", - "id": "2572fb15-de4f-4be7-809b-955d26895d84", - "metadata": {}, - "source": [ - "## Dataclasses\n", - "\n", - "Auto Dataclass\n", - "\n", - "|Attribut|Wert|\n", - "|-|-|\n", - "|Marke|VW|\n", - "|Fahrzeugtyp|Limousine|\n", - "|Seriennummer||" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "feb80166-b58a-46bf-94b0-f26142d6131f", - "metadata": {}, - "outputs": [], - "source": [ - "from dataclasses import dataclass" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "b9c6ba77-1d59-4058-b18c-601989d9b8db", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataclass # Decorator" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "81e41f92-8ce6-40de-9319-629cb69c73e9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Auto(marke='VW', model='Limousine', serial_nr=1146)" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ser_gen = serial_nr_gen()\n", - "\n", - "# Diese Syntax einfach merken\n", - "@dataclass\n", - "class Auto:\n", - " marke: str # 1 Attribut\n", - " model: str # 2 Attribut\n", - " serial_nr: int = next(ser_gen) # 3 Attribut mit Standardwert\n", - "\n", - "Auto(\"VW\", \"Limousine\") # Erstellt eine Auto Dataclass " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "f2e0e50e-f1f9-4ead-8530-0aeb40989581", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Auto(marke='Porsche', model='SUV', serial_nr=1146)" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Auto(model=\"SUV\", marke=\"Porsche\") # Attribute können explizit definiert werden" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "e5cb5618-50a9-4e38-a0b4-7e3e5e4c2295", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Auto(marke='Porsche', model='SUV', serial_nr=5678)" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Auto(model=\"SUV\", serial_nr=5678, marke=\"Porsche\") # Standardwerte lassen sich überschreiben " - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "655cbee0-88c0-4f60-97c5-4ef475d59f0b", - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "Auto.__init__() got an unexpected keyword argument 'reifenzahl'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[37], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mAuto\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mSUV\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mserial_nr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5678\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmarke\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPorsche\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreifenzahl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mTypeError\u001b[0m: Auto.__init__() got an unexpected keyword argument 'reifenzahl'" - ] - } - ], - "source": [ - "Auto(model=\"SUV\", serial_nr=5678, marke=\"Porsche\", reifenzahl=5) # Nicht bekanntes Attribut wirft Fehler" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "22c0625c-4e7d-46aa-a711-5cc2bb759427", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'marke': 'Porsche', 'model': 'SUV', 'serial_nr': 12766}" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Beispiel als Dict\n", - "vw = {\n", - " \"marke\": \"Porsche\",\n", - " \"model\": \"SUV\",\n", - " \"serial_nr\": 12766\n", - "}\n", - "\n", - "vw" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "77668ca0-719d-48b8-954f-b2f7becdb318", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'marke': 'Porsche', 'model': 'SUV', 'serial_nr': 12766, 'reifenzahl': 7}" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Dict wirft keinen Fehler\n", - "vw[\"reifenzahl\"] = 7\n", - "vw" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "deb76203-f99c-45d1-b1f6-8395dc22ccab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Porsche'" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vw[\"marke\"] # Zugriff auf Wert im dict" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "b3397bbe-0925-4189-b079-bef46a3dff95", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Auto(marke='Porsche', model='SUV', serial_nr=5678)" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "porsche = Auto(model=\"SUV\", serial_nr=5678, marke=\"Porsche\")\n", - "porsche" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "4a244554-957a-423d-8561-765aad99475a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'SUV'" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "porsche.model # Zugriff auf Attribut in der Dataclass" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "3c02985e-e7b7-4dd6-aad5-02a3bd3e5312", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5678" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "porsche.serial_nr # same" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "57ccfffc-e89b-4c51-bc6d-7bf2ca16720f", - "metadata": {}, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'mark'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[44], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mvw\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmark\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n", - "\u001b[0;31mKeyError\u001b[0m: 'mark'" - ] - } - ], - "source": [ - "vw[\"mark\"] # KeyError wenn schlüssel nicht vorhanden im dict" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "8e508117-c1b3-4bf1-b9ae-a73b7bafd801", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Auto(marke=True, model=2.14, serial_nr=1146)" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Type Hints sind Type Hints und hindern nicht daran \"Falsche\" Datentypen an die Dataclasss zu vergeben \n", - "Auto(model=2.14, marke=True) " - ] - } - ], - "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.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/Material/data.txt b/Material/data.txt deleted file mode 100644 index c544b99..0000000 --- a/Material/data.txt +++ /dev/null @@ -1 +0,0 @@ -Ich will nachhause \ No newline at end of file diff --git a/Material/test.txt b/Material/test.txt deleted file mode 100644 index 904a0b0..0000000 --- a/Material/test.txt +++ /dev/null @@ -1,4 +0,0 @@ -Super Secret Message -Hallo Welt -Geiler Kurs -Freitag 15h yeah \ No newline at end of file diff --git a/Material/testfile.txt b/Material/testfile.txt deleted file mode 100644 index 28bf81b..0000000 --- a/Material/testfile.txt +++ /dev/null @@ -1,100 +0,0 @@ -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python -Python diff --git a/Material/wise_23_24/lernmaterial/Folium & Pandas/pandas.ipynb b/Material/wise_23_24/lernmaterial/Folium & Pandas/pandas.ipynb index eb5cac9..11d95ac 100644 --- a/Material/wise_23_24/lernmaterial/Folium & Pandas/pandas.ipynb +++ b/Material/wise_23_24/lernmaterial/Folium & Pandas/pandas.ipynb @@ -2684,7 +2684,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.0" + "version": "3.12.7" } }, "nbformat": 4, diff --git a/Material/wise_23_24/lernmaterial/numpy & matplotlib/matplotlib.ipynb b/Material/wise_23_24/lernmaterial/numpy & matplotlib/matplotlib.ipynb index 3dca8b3..538d7a1 100644 --- a/Material/wise_23_24/lernmaterial/numpy & matplotlib/matplotlib.ipynb +++ b/Material/wise_23_24/lernmaterial/numpy & matplotlib/matplotlib.ipynb @@ -1714,7 +1714,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.0" + "version": "3.12.7" } }, "nbformat": 4, diff --git a/Material/wise_24_25/4.NumPy_MatPlotLib_Lösungen.ipynb b/Material/wise_24_25/4.NumPy_MatPlotLib_Lösungen.ipynb new file mode 100644 index 0000000..3caea72 --- /dev/null +++ b/Material/wise_24_25/4.NumPy_MatPlotLib_Lösungen.ipynb @@ -0,0 +1,671 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2f5e1fcf-c1b1-49e2-8f5f-8851c4662359", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "# Lösungen Numpy & MatPlotLib" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "0c77fded-7665-41ea-a823-90fc631d9cb7", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "089b58c3-dbf7-4436-ae44-a2fda277d939", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe\n", + "\n", + "*1 Punkt*\n", + "\n", + "Erstellen Sie ein NumPy Array, welches 6 Nullen reserviert und speichern Sie das Array in der Variablen `only_zeros`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f534c21c-afc6-4d61-be54-bf7ffc17947b", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "only_zeros = np.zeros(6)\n", + "only_zeros" + ] + }, + { + "cell_type": "markdown", + "id": "8e770dff-f8b2-4222-8487-3a239673cb42", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe\n", + "\n", + "*1 Punkt*\n", + "\n", + "Erstellen Sie ein NumPy Array mit 11 Elementen mittels `linspace`. Dabei soll der Startwert = -4 und der Endwert = 17 sein. Speichern Sie das Ergbniss in der Variablen `x_scale`. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1154acb7-f10a-4b97-85ec-d8d0e4990531", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-4. , -1.9, 0.2, 2.3, 4.4, 6.5, 8.6, 10.7, 12.8, 14.9, 17. ])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_scale = np.linspace(-4, 17, num=11)\n", + "x_scale" + ] + }, + { + "cell_type": "markdown", + "id": "4efff856-e35c-47b0-ae03-87c94ac5cb31", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe - Erster eigener Plot Square Root\n", + "\n", + "Analog zu voheriger Erklärung plotten Sie im folgenden die Funktion Square Root, Mathematisch definiert als $f(x) = \\sqrt x; \\quad x \\geq 0$.\n", + "\n", + "Gehen Sie dabei wie folgt vor:\n", + "1. Definieren Sie einen **geeigneten** [Linespace](https://numpy.org/doc/stable/reference/generated/numpy.linspace.html#numpy-linspace) für die Zahlenraum 0...100. (Tipp: Achten Sie auf die Definition! Die Wurzel ist nur für positive Zahlen definiert.)\n", + "2. Berechnen Sie mittels der Funktion [np.sqrt](https://numpy.org/doc/stable/reference/generated/numpy.sqrt.html#numpy.sqrt) die Werte für die Wurzel.\n", + "3. Plotten Sie das Ergebnis" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0eaac4f3-6635-4be6-9769-103d3f982f01", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "xs = np.linspace(0, 100, num=200)\n", + "ys = np.sqrt(xs)\n", + "plt.plot(xs, ys)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "81980caa-194a-4ed5-9d3a-9121bb2021a1", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe - Multiplot\n", + "\n", + "*8 Punkte*\n", + "\n", + "In der nächsten Aufgabe wollen wir gleich zwei Funktionen plotten. $f(x) = \\sqrt x; x \\geq 0$ und $g(x) = x^2$.\n", + "\n", + "Gehen Sie dabei wie folgt vor:\n", + "1. Definieren Sie einen geeigneten [Linespace](https://numpy.org/doc/stable/reference/generated/numpy.linspace.html#numpy-linspace) für die Zahlenraum 0...3. (Tipp: Achten Sie auf die Definition! Die Wurzel ist nur für positive Zahlen definiert.)\n", + "2. Berechnen Sie mittels der Funktion [np.sqrt](https://numpy.org/doc/stable/reference/generated/numpy.sqrt.html#numpy.sqrt) die Werte für die Wurzel.\n", + "3. Berechnen Sie mittels der Funktion [np.square](https://numpy.org/doc/stable/reference/generated/numpy.square.html#numpy-square) die Werte für die Quadratzahlen\n", + "4. Geben Sie den beiden Plots die Farben Grün & Rot. Nutzen Sie gerne die [Color Shorthands](https://matplotlib.org/stable/users/explain/colors/colors.html) aus der Dokumentation.\n", + "5. Plotten Sie die Square Funktion mit dem Linestyle `dashdot`, wie der Dokumentation zu entnehmen [Linestyles](https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html)\n", + "6. Geben Sie den beiden Plots angemessene Labels.\n", + "7. Fügen Sie die Legende hinzu.\n", + "8. Plotten Sie das Ergebnis." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "670c67ea-973a-46ca-802f-d7e74b47f267", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "xt = np.linspace(0, 3, num=200)\n", + "sqrt = np.sqrt(xt)\n", + "square = np.square(xt)\n", + "\n", + "plt.plot(xt, sqrt, color='r', label=\"Square Root\")\n", + "plt.plot(xt, square, color='g', label=\"Square Function\", linestyle=\"dashdot\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "40d39b96-7469-4c7a-9cc2-f837379d4761", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe\n", + "\n", + "*6 Punkte*\n", + "\n", + "Schreibe einen _Linear Congruent Generator_ mit dem funktionsnamen `lcg`.\n", + "\n", + "- Nutze die oben gegebene Definition\n", + "- Prüfe auch, das Werte nicht verwendet werden dürfen (Bsp. $n \\geq 0$)\n", + "- `lcg` muss ein unendlicher Generator sein" + ] + }, + { + "cell_type": "markdown", + "id": "1611e66f-2f42-4820-9743-d68bfab86b2c", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "# Pseudo Randomness\n", + "\n", + "Zufallszahlen in Computern werden über Formeln berechnet. Einer dieser Generatoren ist der _Linear Congruent Generator (LCG)_, dessen mathematische Grundlage leicht verdaulich ist.\n", + "\n", + "$$ X_{n+1} = (aX_n + c) \\;mod\\; m; \\quad n \\geq 0 $$\n", + "\n", + "Wenn $ c = 0 $ dann nennt man den Generator auch _Multiplicative Congruent Generator (MCG)_.\n", + "\n", + "Die Werte haben folgenden Nutzen in der Funktion:\n", + "\n", + "- $X_n$ ist der Startwert oder seed\n", + "- $X_{n+1}$ ist der Folgewert der im nächsten Schritt für $X_n$ eingesetzt wird\n", + "- $a$ ist der Vorfaktor vom Startwert. Dieser wird skaliert, deshalb wird er Skalar gennant\n", + "- $c$ ist das hinzuaddierte Offset\n", + "- $m$ ist der Restklassenring oder auch Modulus genannt" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "aa028122-a194-489c-96bb-843c1de48582", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def lcg(seed: int, scalar: int, modulus: int, offset: int) -> int:\n", + " ''' \n", + " Linear Congruential Generators\n", + "\n", + " X(n+1) = (a X(n) + c) mod m; n >= 0\n", + "\n", + " m > 0; \n", + " 0 <= a < m;\n", + " c > 0; a > 0\n", + "\n", + " '''\n", + " assert modulus > 0, \"Modulus must be greater than 0\"\n", + " assert 0 <= scalar and scalar < modulus, \"Scalar must be in range 0 <= a < m\"\n", + "\n", + " while seed > 1:\n", + " seed = (scalar*seed+offset) % modulus\n", + " assert seed >= 0\n", + " yield seed" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "dfc956c7-803f-4745-afd8-ffbc62800f2d", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1. 3089810780120156248\n", + "2. 8356396685252565260\n", + "3. 1921117399837525548\n", + "4. 14806858147081821235\n", + "5. 2557599628047639428\n" + ] + } + ], + "source": [ + "# Cocktailshaker Numbers\n", + "rng = lcg(\n", + " 3935559000370003845,\n", + " 3203021881815356449,\n", + " 2**64-1, 11742185885288659963\n", + " )\n", + "\n", + "for i in range(1,6):\n", + " print(f\"{i}.\", next(rng))" + ] + }, + { + "cell_type": "markdown", + "id": "1fceb903-350b-4f70-bef0-c71b8aec07ad", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe\n", + "\n", + "*6 Punkte*\n", + "\n", + "Plote die Zufallszahlen eines _Permuted Congruent Generators_ mittels NumPy & MatPlotLib.\n", + "\n", + "- Gegeben ist der Anfangszustand des Generators.\n", + "- Nutze die Dokumentation und rufe den `default_rng` aus dem `numpy.random` Modul, **20** mal auf speichere die Werte in der variablen `pcgs`. *(Tipp: Nutze ein NumPy Array)*\n", + "- Sortiere im nächsten Schritt die in `pcgs` gespeicherten Werte und speichere diese in `pcgs_sorted`\n", + "- Plotte sinnvoll beide Array. Gestalte den Plot angemessen." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fa2f68b1-ab67-4177-a8bc-5ff461c9c10d", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# Given\n", + "np.random.seed(42) # Setting a fixed start Value for the Generator\n", + "pcgs: np.array = None\n", + "pcgs_sorted: np.array = None" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "43aed358-ec09-4c59-a95c-23ca194cc9b0", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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WbNm4dy5c7TcmRgfP03DcUBiIuDuLsgw9M6MbNu2DZMnT8bMmTMRERGBxo0bo0uXLoiLi9N6/MmTJzFgwACMHDkSFy9eRO/evdG7d29cu3bNEOMvMxWnwu5bu9Hy15bosrEL/nn4D6yV1hgTOAZ3JtzB+nfWUyBCDEahUMDB2kGQj/LWNtWvXx9paWkAgHr16iE6OhrR0dHq79+4cQNJSUmoX79+ieextrZGXinvvJo1a4YbN26gZs2aRT6KW5HDnxtAgfN7enrC29sbDx48KHKuavxGlsVwcHBAzZo14evrWyAQAYCBAwfizp072L17d5HbcRyH5ORkWFhYoG/fvti4cSOePn1a4n3h1RRZcHAwFi1ahCtXriAqKgp///13qbcjpNysrABnZ3ZZwJbwegcjS5YswahRozB8+HDUr18fK1euhL29PdasWaP1+B9++AFdu3bF//73P9SrVw9ff/01mjVrhp9++skQ4y8zFafCJ4c+wfmn52FnaYdJQZPw4OMHWPn2SlR3qy7o2AgRQkJCAjp27IiNGzfiypUriIyMxB9//IFFixapizWDg4MREBCAQYMGISIiAmfPnsWQIUPQvn37UqdO/P39cebMGURFReH58+dQqVRFjvniiy9w8uRJjB8/HpcuXcLdu3exe/dujB8/vsRze3h4wM7ODgcPHkRsbCySk5MBALNnz8aCBQvw448/4s6dO7h69SrWrl2LJUuWlPnn1LdvX/Tr1w8DBgzA/Pnzcf78eTx8+BB79+5FcHAwjh07BgCYP38+qlSpgpYtW2LNmjW4cuUK7t+/j507d+LUqVPq7MzevXvx448/4tKlS3j48CHWr18PlUpVal0KIQYjhroRfZboZGVlcUqlktu5c2eB64cMGcL17NlT6218fHy477//vsB1M2bM4Bo1alTs/WRmZnLJycnqj+joaKMs7V1/aT037eg0Lu5lnEHPS8ybVJdfZmZmclOmTOGaNWvGubi4cPb29lydOnW4r776iktPT1cfp+vS3sJu377NtWrVirOzsytxae/Zs2e5Tp06cY6OjpyDgwPXqFEjbt68eerv+/n5Ffmfwr1awuvj48NZWFgUWNq7adMmrkmTJpy1tTXn5ubGvf7669yOHTuK/TloW9pbWF5eHrdixQquRYsWnL29Pefs7MwFBgZyP/zwQ4GfVVJSEjd16lT1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gen = np.random.default_rng()\n", + "pcgs = np.array([gen.random() for _ in range(20)])\n", + "pcgs_sorted = np.sort(pcgs)\n", + "\n", + "# Plot\n", + "plt.plot(np.arange(len(pcgs_sorted)), pcgs, color='r', label='PCGs')\n", + "plt.plot(np.arange(len(pcgs_sorted)), pcgs_sorted, color='g', label='Sortierte PCGs')\n", + "plt.title(\"PCG Random Numbers\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6690543b-7fc9-488e-a93e-b69794454b4d", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "### Aufgabe\n", + "\n", + "*5 Punkte*\n", + "\n", + "Ihnen ist ein Datenset `sec_school` einer Hauptschule gegeben, welches die Klassenstufen von 5 bis 9 auf die Anzahl ihrer Schüler im Jahrgang mappt. \n", + "\n", + "Definieren Sie einen Barplot. Gehen Sie dabei wie folgt vor:\n", + "1. Definieren Sie ein geeignetes Farbschema zur Darstellung der Daten.\n", + "2. Extrahieren Sie die Schlüssel und Werte aus dem Datenset und übergeben Sie diese zusammen mit den Farbwerten an die Funktion `plt.bar`.\n", + "3. Setzen Sie geeignete Werte für die X & Y-Achse.\n", + "4. Setzen Sie einen geeigneten Titel für den Plot.\n", + "5. Plotten Sie den Werte" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "de984d20-c338-4cae-acc6-7bf74fa6337e", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# Given\n", + "sec_school = {\n", + " '5. Klasse': 29,\n", + " '6. Klasse': 35,\n", + " '7. Klasse': 25,\n", + " '8. Klasse': 28,\n", + " '9. Klasse': 31\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "1e8dd05a-2aea-4732-ba49-c3a6c104cbb4", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABM70lEQVR4nO3deXjM9/7//8ckkUlEEkKIEEFstbW11VJSglC0ilrqtLaWtuii29HF2lZ1UT2tqtantGpXS48WVcRS2mNXtTSU2pdSSQRB8vr98WvmaySRGSYmb73frmuuy7yX1zzn9V7y8N7GZowxAgAAsCAfbxcAAABwvQgyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggy/3CTJ0+WzWbT/v37HcPuuece3XPPPV6ty5OGDRsmm82W79u8UQkJCbLZbEpISPB2KbiGsmXLqm3bth5t81bbZt2R3T4MrpsyZYqqVKmiAgUKqHDhwt4u57oQZDzovvvuU8GCBZWSkpLjNN27d5e/v79OnTp1w5935MgRDRs2TFu2bLnhtqwmc+e1YcMGp+FJSUmqV6+eAgICtHjxYq/Vh//nnnvuUfXq1bMdt3//ftlsNr377rs3va7s/JO3qfwkM5TPmTPHafjFixfVtm1b+fj46PPPP/daffnBtGnTNHbs2BtqY9euXerZs6diYmL02Wef6dNPP/VYfTcTQcaDunfvrvPnz2vevHnZjj937pwWLFigVq1aqWjRojf8eUeOHNHw4cNvaKf78MMP6/z584qOjr7herwtOTlZLVu21LZt2zRv3jy1atVKkvTqq6/q/Pnz3i4vzzVp0kTnz59XkyZNvF2KZXlim0LeuHTpkjp16qTvvvtOn332mXr37u3tkrzKE0EmISFBGRkZ+uCDD9SzZ0917tzZY/XdTAQZD7rvvvsUHBysadOmZTt+wYIFSk1NVffu3W/ocy5fvqyLFy/eUBuZfH19FRAQkO9Ok7grJSVF8fHx2rJli77++mu1bt3aMc7Pz08BAQFerS83586du+E2fHx8FBAQIB+fm7tZZ2Rk6MKFCzf1M5F/XbhwQRkZGR5t89KlS+rcubMWLlyoCRMmqE+fPh5t/5/qxIkTkmTZU0qZCDIeFBgYqA4dOmjZsmWOFeRK06ZNU3BwsO677z5J0pkzZ/TMM88oKipKdrtdFSpU0OjRo512Alceeh87dqxiYmJkt9v18ccfq27dupKkXr16yWazyWazafLkyY55f/75Z7Vq1UqhoaEqWLCgYmNj9eOPPzrV5Mr55Zymye6ajMzTCDt27FDTpk1VsGBBlSpVSm+//XaWdv/44w/dd999CgoKUvHixfXss89qyZIlbl/ncfbsWbVq1UqbNm3S119/rTZt2jiNz+56FpvNpgEDBmj+/PmqXr267Ha7qlWrlu3pqDVr1qhu3boKCAhQTEyMJkyYkGMtX331lWrXrq3AwECFhYWpa9euOnjwoNM0mX20ceNGNWnSRAULFtTLL798ze+4a9cuderUSWFhYQoICFCdOnX0zTffOE1zo8sjLS1NQ4cOVYUKFWS32xUVFaUXX3xRaWlp2fbd1KlTVa1aNdntdo+exjt9+rSef/551ahRQ4UKFVJISIhat26trVu3Ok13Pevlxo0b1bBhQwUGBqpcuXL65JNPnOa71jaVmJiojh07KiIiQgEBASpdurS6du2qpKQkp8//6quvVK9ePRUsWFBFihRRkyZN9P3332f5nmvWrHGcBi1fvry+/PJLp/E5XYfl6jUhri7P7LjSX7qir2fMmKFXX31VpUqVUsGCBZWcnCxJmj17tmN7KFasmP71r3/p8OHDuX7+lS5fvqyuXbtqwYIFGj9+vB577LFc51mwYIHatGmjyMhI2e12xcTEaOTIkUpPT3eazpVlunTpUt19990qXLiwChUqpMqVK2fZXt3ddnLb76SkpOiZZ55R2bJlZbfbVbx4cbVo0UKbNm2S/l4+3377rf744w/Helq2bFnJje2ibNmyGjp0qCQpPDxcNptNw4YNc0y/aNEiNW7cWEFBQQoODlabNm3066+/5tr33uDn7QJuNd27d9cXX3yhWbNmacCAAY7hp0+f1pIlS9StWzcFBgbq3Llzio2N1eHDh9WvXz+VKVNGa9eu1eDBg3X06NEshwwnTZqkCxcuqG/fvrLb7XrggQeUkpKiIUOGqG/fvmrcuLEkqWHDhpKk5cuXq3Xr1qpdu7aGDh0qHx8fTZo0Sc2aNdPq1atVr169POuDv/76S61atVKHDh3UuXNnzZkzRy+99JJq1KjhOFKSmpqqZs2a6ejRo3r66acVERGhadOmacWKFW59Vmpqqlq3bq3169drzpw5bl1E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6tevr/r163umGgAAADe4fWrJ19dXTZs2zfK8mOPHj8vX19eTtQEAAFyT20HGGKO0tDTVqVNHv/76a5ZxAAAAN4vbQcZms+nrr79Wu3bt1KBBAy1YsMBpHAAAwM1yXUdkfH199cEHH+jdd99Vly5d9Prrr3M0BgAA3HQ3dLFv3759VbFiRT344INatWqV56oCAABwgdtHZKKjo50u6m3atKl++uknHTx40NO1AQAAXJPbQWbfvn0qWrSo07AKFSpo8+bN+v33391qa9WqVWrXrp0iIyNls9k0f/58p/E9e/aUzWZzerVq1crdkgEAwC3quk8tXbx4USdOnFBGRoZjmLsX+6ampur2229X79691aFDh2ynadWqlSZNmuR4z88gAACATG4Hmd9++019+vTR2rVrnYYbY2Sz2ZSenu5yW61bt1br1q2vOY3dbldERIS7ZQIAgH8At4NMr1695Ofnp4ULF6pkyZJ5fst1QkKCihcvriJFiqhZs2Z6/fXXs5zaulJaWprS0tIc75OTk/O0PgAA4D1uB5ktW7Zo48aNqlKlSt5UdIVWrVqpQ4cOKleunPbu3auXX35ZrVu31rp163J8ivCoUaM0fPjwPK8NAAB4n9tBpmrVqvrzzz/zppqrdO3a1fHvGjVqqGbNmoqJiVFCQoLi4uKynWfw4MEaNGiQ431ycrKioqJuSr0AAODmcvuupdGjR+vFF19UQkKCTp06peTkZKdXXipfvryKFSumPXv25DiN3W5XSEiI0wsAANya3D4i07x5c0nKckTkei72ddehQ4d06tQplSxZMs8+AwAAWIfbQWbFihUe+/CzZ886HV3Zt2+ftmzZorCwMIWFhWn48OHq2LGjIiIitHfvXr344ouqUKGC4uPjPVYDAACwLreDTGxsbI7jtm/f7lZbGzZsUNOmTR3vM69t6dGjh8aPH69t27bpiy++0JkzZxQZGamWLVtq5MiRPEsGAABIN/pbS5KUkpKi6dOna+LEidq4caNbp5buueeea/7Y5JIlS260PAAAcAtz+2LfTKtWrVKPHj1UsmRJvfvuu2rWrJl++uknz1YHAABwDW4dkTl27JgmT56s//u//1NycrI6d+6stLQ0zZ8/X1WrVs27KgEAALLh8hGZdu3aqXLlytq2bZvGjh2rI0eO6MMPP8zb6gAAAK7B5SMyixYt0lNPPaUn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b95cO3bsUKlSpa6rTfr9+nBEJo/5+fkpIiLC8SpWrNh1t3Xw4EE1btxYoaGhWr58uYoWLZrtdKdOnXIk+oIFC6pGjRqaPn260zRz5sxRjRo1FBgYqKJFi6p58+ZKTU2V/j50X69ePQUFBalw4cJq1KiR/vjjD8e8CxYsUK1atRQQEKDy5ctr+PDhunz58nV/L08bPXq0oqKiNGnSJNWrV0/lypVTy5YtFRMTc13tnTlzRi1atNCRI0ccO5fspKenq0+fPo7/GVeuXFkffPCB0zTX6tutW7eqadOmCg4OVkhIiGrXru10FGnNmjVq3LixAgMDFRUVpaeeesqxzPKD8PBwp3V94cKFiomJUWxs7HW1x/rumrVr1+r+++9XmzZtVLZsWXXq1EktW7bU//73v+tqj/U9d+fPn9fXX3+tt99+W02aNFGFChU0bNgwVahQQePHj7+uNun360eQyWOJiYmKjIxU+fLl1b17dx04cOC62tm9e7caNWqkqlWr6rvvvlOhQoVynPbChQuqXbu2vv32W23fvl19+/bVww8/7NixHT16VN26dVPv3r21c+dOJSQkqEOHDjLG6PLly2rfvr1iY2O1bds2rVu3Tn379nX84Obq1av1yCOP6Omnn9aOHTs0YcIETZ48WW+88cZ19pDnffPNN6pTp44efPBBFS9eXHfeeac+++yz62rr2LFjjj/EK1euzPHHSvX374CVLl1as2fP1o4dOzRkyBC9/PLLmjVrliTl2rfdu3dX6dKltX79em3cuFH//ve/VaBAAUnS3r171apVK3Xs2FHbtm3TzJkztWbNmnz7oMiLFy/qq6++Uu/eva/rx1pZ313XsGFDLVu2TL/99pv09x+qNWvWqHXr1m63xfrumsuXLys9PV0BAQFOwwMDA7VmzRq326Pfb5BBnvnuu+/MrFmzzNatW83ixYtNgwYNTJkyZUxycrLLbezbt89IMv7+/qZp06bm8uXLWaZZsWKFkWT++uuvHNtp06aNee6554wxxmzcuNFIMvv3788y3alTp4wkk5CQkG07cXFx5s0333QaNmXKFFOyZEmXv1Nes9vtxm63m8GDB5tNmzaZCRMmmICAADN58mS32sns9ypVqpjU1NQs4zOXzebNm3Nso3///qZjx47GuNC3wcHBOdbYp08f07dvX6dhq1evNj4+Pub8+fNufa+bYebMmcbX19ccPnzYrflY392Xnp5uXnrpJWOz2Yyfn5+x2WxZanYF67t7GjRoYGJjY83hw4fN5cuXzZQpU4yPj4+pVKmSW+3Q7zeOIHMT/fXXXyYkJMRMnDjR5XkyV+JOnToZPz8/M2vWrCzTXL1jv3z5shkxYoSpXr26KVKkiAkKCjJ+fn7mwQcfdIyPi4szwcHBplOnTubTTz81p0+fdrTXs2dPY7fbTdu2bc3YsWPNkSNHHOOKFStmAgICTFBQkOMVEBBgJGW7EXpDgQIFTIMGDZyGDRw40NSvX9+tdiSZDh06GB8fHzNmzJgs47PbwXz00UemVq1aplixYiYoKMgUKFDA1K1b1zH+Wn07dOhQ4+fnZ+Li4syoUaPMnj17HOPq1Klj/P39nfq9YMGCRpLZsWOHW9/rZmjZsqVp27at2/Oxvrtv+vTppnTp0mb69Olm27Zt5ssvvzRhYWHXFdxZ3123Z88e06RJEyPJ+Pr6mrp165ru3bubKlWquNUO/X7jCDI3WZ06dcy///1vl6e/ciUeMWKE8fPzMzNnznSa5uod+6hRo0zRokXNlClTzJYtW0xiYqJp06aNuf/++x3zZGRkmDVr1pghQ4aYGjVqmPDwcPP77787xm/atMm8+eabpkGDBqZQoUJm3bp1xhhjAgICzOjRo01iYmKWV3p6ugd66MaVKVPG9OnTx2nYxx9/bCIjI91qR5KZN2+emTx5svHx8THvvfee0/irdzDTp083AQEBZty4cWbTpk0mMTHR9O3b19x+++1O8+XUt8YYs3v3bjNmzBjTokUL4+/vb+bOnWuMMaZKlSpm4MCB2fZ7Wlqa232Ul/bv3298fHzM/Pnz3Z6X9d19pUuXNh999JHTsJEjR5rKlSu71Q7r+/U5e/asIyh07tzZ3HvvvW7NT7/fOILMTZSSkmKKFCliPvjgA5fnuXolfv31142fn5+ZMWOGY5qrd+xt27Y1vXv3doxPT083FStWdNqxX+ny5cumVKlSWTagTPXr1zcDBw40xhjTsGFDp7bzo27dupm7777badgzzzyT5ShNbjJ3MMYY8+WXXxpfX1/zzjvvOMZfvWwGDBhgmjVr5tRGXFxclh3Mla7s26t17drVtGvXzhhjzEMPPWTi4uLcqt9bhg4daiIiIsylS5fcnpf13X1hYWHm448/dhr25ptvmooVK7rVDuv7jTl9+rQJDQ01EyZMcGs++v3Gcft1Hnr++efVrl07RUdH68iRIxo6dKh8fX3VrVs3xzSPPPKISpUqpVGjRrnU5iuvvCJfX191795dGRkZTm1lqlixoubMmaO1a9eqSJEiGjNmjI4fP66qVatKkn7++WctW7ZMLVu2VPHixfXzzz/r5MmTuu2227Rv3z59+umnuu+++xQZGandu3crMTFRjzzyiCRpyJAhatu2rcqUKaNOnTrJx8dHW7du1fbt2/X66697rO9uxLPPPquGDRvqzTffVOfOnfW///1Pn376qT799FPHNIMHD9bhw4f15ZdfutTmww8/LB8fH/Xo0UPGGL3wwgtZpqlYsaK+/PJLLVmyROXKldOUKVO0fv16x90H1+rb8+fP64UXXlCnTp1Urlw5HTp0SOvXr1fHjh0lSS+99JLq16+vAQMG6NFHH1VQUJB27NihpUuX6qOPPvJY392ojIwMTZo0ST169Mj2UQOs757Xrl07vfHGGypTpoyqVaumzZs3a8yYMerdu7djGtZ3z1uyZImMMapcubL27NmjF154QVWqVFGvXr0c09DvN4m3k9StrEuXLqZkyZLG39/flCpVynTp0sXpfKQxxsTGxpoePXrk2EZOF3qNHj3a+Pr6mqlTp2b5H+qpU6fM/fffbwoVKmSKFy9uXn31VfPII484/oe6Y8cOEx8fb8LDw43dbjeVKlUyH374oTHGmGPHjpn27ds76o6OjjZDhgxxOoy+ePFi07BhQxMYGGhCQkJMvXr1zKeffurRvrtR//3vf0316tWN3W43VapUyVJfjx49TGxs7DXbuPJ/SpmmTZtmfH19zVtvvZVl2Vy4cMH07NnThIaGmsKFC5snnnjC/Pvf/3b8T+lafZuWlma6du1qoqKijL+/v4mMjDQDBgxwusDuf//7n2nRooUpVKiQCQoKMjVr1jRvvPGGB3vtxi1ZssRIMrt37852POu75yUnJ5unn37alClTxgQEBJjy5cubV155xelUAOu7582cOdOUL1/e+Pv7m4iICNO/f39z5swZp2no95vDZtx9/CMAAEA+wXNkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkAACAZRFkALjtnnvu0TPPPOPtMrxu/vz5qlChgnx9fekPwEsIMgCy6Nmzp9q3b+80bM6cOQoI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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "colors = [\"red\", \"blue\", \"green\", \"yellow\", \"pink\"]\n", + "plt.bar(sec_school.keys(), sec_school.values(), color=colors)\n", + "plt.xlabel(\"Klassenstufe\")\n", + "plt.ylabel(\"Anzahl Kinder\")\n", + "plt.title(\"Verteilung Kinder einer Hauptschule pro Klassenstufe\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "cde352d1-f127-40cb-bc32-96415fa90aee", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Aufgabe\n", + "\n", + "*5 Punkte*\n", + "\n", + "Ihnen ist ein Datenset `sec_school` einer Hauptschule gegeben, welches die Klassenstufen von 5 bis 9 auf die Anzahl ihrer Schüler im Jahrgang mappt. \n", + "\n", + "Definieren Sie einen Pieplot. Gehen Sie dabei wie folgt vor:\n", + "1. Definieren Sie ein geeignetes Farbschema zur Darstellung der Daten.\n", + "2. Extrahieren Sie die Schlüssel und Werte aus dem Datenset und übergeben Sie diese zusammen mit den Farbwerten an die Funktion `plt.pie`. (Nutzen Sie zum Anzeigen der Prozentwerte autopct='%1.1f%%')\n", + "3. Lassen Sie die 6. Klasse 25% und die 9. Klasse 40% explodieren.\n", + "4. Setzen Sie einen geeigneten Titel für den Plot.\n", + "5. Plotten Sie den Werte." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "fcf4f172-6065-4855-afa1-b745615e10b0", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# Given\n", + "sec_school = {\n", + " '5. Klasse': 29,\n", + " '6. Klasse': 35,\n", + " '7. Klasse': 25,\n", + " '8. Klasse': 28,\n", + " '9. Klasse': 31\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "66f686f2-3ef8-491e-93cd-5815d8fe535d", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.pie(\n", + " sec_school.values(),\n", + " labels=sec_school.keys(),\n", + " autopct='%1.1f%%',\n", + " explode=[0, 0.25, 0, 0, 0.4]\n", + ")\n", + "\n", + "plt.title(\"Klassenverteilung einer Grundschule\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "c061468f-c0ed-4745-8780-49e5e6370612", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "# Extra: The Meme" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "2d3225b3-ae16-4c53-857f-fa20b3134f45", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "data = {\n", + " \"Sky\": 0.77,\n", + " \"Sunny side of pyramid\": 0.17,\n", + " \"Shady side of pyramid\": 0.05\n", + "}\n", + "colors = [\"#0095d9\", \"#f5e837\", \"#c4b633\"]\n", + "plt.pie(data.values(), startangle=-50, colors=colors)\n", + "plt.legend(data.keys(), bbox_to_anchor=(1, 0, 0.5, 0.6))\n", + "plt.savefig(\"meme.png\", bbox_inches=\"tight\", transparent=True)" + ] + } + ], + "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 +} diff --git a/Material/wise_24_25/6.Lösungen_Monte_Carlo.ipynb b/Material/wise_24_25/6.Lösungen_Monte_Carlo.ipynb new file mode 100644 index 0000000..fc82c02 --- /dev/null +++ b/Material/wise_24_25/6.Lösungen_Monte_Carlo.ipynb @@ -0,0 +1,441 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bf4df686-a2d8-4c78-b3ed-61e1ce40b77d", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "# Lösungen Monte Carlo" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f2060633-3907-40aa-bd09-fe426b7ef1d1", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import scipy.stats as stats" + ] + }, + { + "cell_type": "markdown", + "id": "28f70850-ee86-4859-ac2c-06335537007e", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "### Aufgabe - Arbeitszeit abschätzen\n", + "\n", + "*7 Punkte* \n", + "\n", + "Du befindest dich in der Situation wieder das dein Chef dich damit Beauftragt zwei wichtige Aufgaben bis zum Ende des Arbeitstages zu bearbeiten. Im Gegennsatz dazu bist du Abends auf einem Grillfest mit deinen Freunden verabredet. Dieses findet um 18 Uhr statt. Da du dich nun im zwiespalt befindest deinen Beruflichen Aufgaben nachzukommen und auf dem Grillfest zu erscheinen, fragst du dich im nächsten Schritt wie hoch die Chance ist, dass in 9 Stunden anstehende Grillfest pünktlich zu erreichen und gleichzeitig deinen Beruflichen Verpflichtungen nachzukommen.\n", + "\n", + "Nach einigen gut durchdachten Überlegungen stellst du folgendes fest:\n", + "\n", + "- An der ersten Aufgabe sitzt du zwischen 1-5 Stunden.\n", + "- An der zweiten Aufgabe sitzt du zwischen 2-6 Stunden.\n", + "- Egal wie schnell du eine Aufgabe löst es gibt keine Auswirkungen auf die andere Aufgabe. (Sie sind unabhängig voneinander)" + ] + }, + { + "cell_type": "markdown", + "id": "671bfa30-579e-41ca-815a-1ce1c6d1b5da", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "Stell im folgenden fest wie hoch die Warscheinlichkeit ist das du pünktlich beim Grillfest angelangst.\n", + "\n", + "Gehe dabei wie folgt vor:\n", + "\n", + "- Nehme an das beide Aufgaben gleichmäßig Verteilt sind, und speichere die Verteilungen in den Variablen `exc1` & `exc2`.\n", + "- Verwende eine geeignete Anzahl an samples. Speichere den gewählten Wert in der variablen `sims`.\n", + "- Speichere die Wahrscheinlichkeit mit der du es zum Grillfest schaffst in der Variablen `chance`, mit einer genauigkeit von zwei nachkommmastellen.\n", + "- Plotte geeignet. Beziehe auch die Variable `chance` mit ein." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "ab3623e5-5ba9-4db8-9c12-4300a4385811", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Die Wahrscheinlichkeit pünktlich beim Grillfest zu erscheinen beträgt 87%\n" + ] + } + ], + "source": [ + "rand = np.random.default_rng(42) # Use this rng!\n", + "\n", + "sims = 1_000\n", + "\n", + "exc1 = rand.uniform(1,5,sims) \n", + "exc2 = rand.uniform(2,6,sims)\n", + "\n", + "duration = exc1 + exc2\n", + "chance = float(np.round((duration <= 9).sum()/sims, decimals=2)) \n", + "\n", + "print(f\"Die Wahrscheinlichkeit pünktlich beim Grillfest zu erscheinen beträgt {chance:.0%}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "55066cb8-be2e-46a3-96b6-e4c2d506e636", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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3InOnTvD2toaO3fuLLbuG2+8YYjYiIjKjZwVEbhqAhGRcclOXHv06IH4+Hh4enqiR48eRdaTJAn5+fmGio+IqEyV5vaiRERkHLITV5VKpfNnIiJzps/tRblqAhGRcclOXCtXrozr16/D3d0dQ4YMwaJFizQTsYiIzB1vU0tEZPpk3/I1JycHaWlpAIA1a9ZAqVSWZVxERERUhsTatXi4cSPE2rXGDoVINtlXXENDQ9GjRw+EhIRACIExY8bAzs5OZ91Vq1YZMkYiIiIytLZtkZOYCHh6GjsSItlkJ67r16/HggULcOvWLUiShNTUVF51JSIiIqJyIztx9fLywuzZswEA1atXx7p16+Dm5laWsRERERERaZTqBgTR0dGGj4SIiIjKz5EjsElIALy8gHbtjB0NkSylSlw/++yzYrd/+umnpY2HiIiIyoE0cCAqx8ZCVKkC/POPscMhkqVUiev27du1nufm5iI6OhpWVlaoWbMmE1ciIiIiMrhSJa5//vlnobK0tDQMGjQIPXv2NERcRERERERaZK/jWhJnZ2fMmDEDU6dONVSTREREREQaBktcASA1NRWpqamGbJKIiIiICCjtUIHFixdrPRdCIC4uDuvWrUPnzp0NFRsRERERkUapEtcFCxZoPbewsICHhwfCwsIwefJkQ8VGRERERKTBdVyJiIiIyCwYdIwrEREREVFZKdUVVwA4f/48fvrpJ8TExCAnJ0dr27Zt2wwRGxERERGRhuwrrosXL4ZSqQQAbNq0CS1atEBkZCS2b9+O3NxcXL16FYcOHYKLi0tZxktEREQGIGJiEB8XBxETY+xQiGSTnbguWLAAmZmZAICZM2diwYIF+PXXX2FjY4NFixbh2rVreOutt+Dv71+W8RIRERFRBSU7cY2OjoabmxsA4NatW+jSpQsAwMbGBpmZmZAkCePHj8eKFSvKLloiIiIiqrBkJ67t2rVDSkoKAKBSpUrIyMgAAFSpUgVXrlwBAKSkpCArK6usYiUiIiKiCkz25KyGDRvC2toaANCqVSscOnQI9evXR+/evTF27FgcOnQI+/fvR/v27csyXiIiIpMVGRkpu667u7txh9d99hmc4uIAHx9g+nTjxUGkB9mJa8GbDixevBiPHz8GAHzyySewtrbGH3/8gV69emHKlCllEykREZGJyk1KACws0L9/f9n7KOztERUZ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 4))\n", + "plt.hist(duration, bins=50, color='#34d8eb', edgecolor='black', alpha=1)\n", + "plt.axvline(9, color='red', linestyle='dashed', linewidth=2, label=\"9 Stunden Grenze\")\n", + "plt.title(f\"Monte-Carlo-Simulation: Zeitverteilung für Aufgaben\\nChance pünktlich: {chance:.0%}\", fontsize=14)\n", + "plt.xlabel(\"Gesamtdauer (Stunden)\")\n", + "plt.ylabel(\"Häufigkeit\")\n", + "plt.legend()\n", + "plt.grid(alpha=0.3)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ff7e91d0-63ed-4225-bd26-680fc7e7e57f", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "### Aufgabe - Simulation einer Körpergewichtszunahme\n", + "\n", + "*13 Punkte* - Credit Viktoria Litza\n", + "\n", + "Gegeben sind die nach Altersgruppe aufgeschlüsselten Durschnittskörpergewichte (in kg) von Männern in Deutschland. (Zu finden beim [Statistischen Bundesamt](https://www.destatis.de/DE/Themen/Gesellschaft-Umwelt/Gesundheit/Gesundheitszustand-Relevantes-Verhalten/Tabellen/koerpermasse-maenner.html))\n", + "\n", + "Nutze die Monte Carlo Methode um den mittleren Gewichtszuwachs der Bezugsgrößen zu bestimmen.\n", + "Die mittlere Gewichtsschwankung eines Durschnittsmannes beträgt 2.5kg über den Tag verteilt. \n", + "Finde die Wahrscheinlichkeit mit der ein Durchschnittsmann pro Woche (7 Tage) 3 kilogramm abnimmt und speichere das Ergebniss in der Variablen `gain_percent`." + ] + }, + { + "cell_type": "markdown", + "id": "6135fcec-f861-4c35-8496-020681012c03", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "Beachte:\n", + "\n", + "- Bestimmt das arithmetische Mittel der Durchschnittsgewichte über die Altersgruppen. Speichere den Wert in `avg_weight` mit einer Präsizion von 1 Dezimalstelle.\n", + "- Verwende eine geeignete Anzahl an samples. Speichere den gewählten Wert in der variablen `sims`.\n", + "- Nehme an das das Durchschnittsgewicht Normal Verteilt ist und mit einer Standardabweichung von 5% zum Durschnittswert. Speichere deine Samples in der Variablen `men_normal`.\n", + "- Nehme an das die Gewichtsschwankung pro Tag Gleich Verteilt ist. Speichere die simulierten zunahmen für eine Woche in der Liste `gain_week`.\n", + "- Berechne die Durschnittliche Gewichtszunahme/abnahme und speichere das Ergebnis in der Variablen `duration`.\n", + "- Plotte Angemessen. Beziehe dabei alle relevanten Werte mit ein.\n", + "- Begründe mit einem kurzen Text dein Vorgehen und erkläre dein Ergebnis, beschreibe als letztes die Aussage deines Plottes." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "09f0e383-52dc-4261-b6a1-134456c93f3b", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# Given\n", + "avg_weight_per_men = {\n", + " \"18 - 20\": 77.9,\n", + " \"20 - 25\": 80.5,\n", + " \"25 - 30\": 83.3,\n", + " \"30 - 35\": 85.6,\n", + " \"35 - 40\": 86.7,\n", + " \"40 - 45\": 88.1,\n", + " \"45 - 50\": 89.8,\n", + " \"50 - 55\": 89.0,\n", + " \"55 - 60\": 88.8,\n", + " \"60 - 65\": 87.9,\n", + " \"65 - 70\": 86.7,\n", + " \"70 - 75\": 85.3,\n", + " \"75+\": 81.0\n", + "}\n", + "\n", + "rand = np.random.default_rng(420) # Use this rng!" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "70e6b6d9-c2bf-49e9-bfd2-cf84eaf4a30e", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# 1. Durchschnittsgewicht berechnen\n", + "avg_weight = round(np.mean(list(avg_weight_per_men.values())), 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "3bf54087-bbae-4494-867d-2ba29323adf7", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# 2. Parameter\n", + "sims = 1_000_000 # Anzahl der Samples\n", + "std_dev = 0.05 * avg_weight # Standardabweichung = 5% des Durchschnittsgewichts\n", + "daily_gain = rand.uniform(-2.5, 2.5, (sims, 7)) # Gewichtsschwankung pro Tag (gleich verteilt)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "c1e4e001-1132-4538-ab6f-1d679a04c74e", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# 3. Normalverteilung für Männergewichte\n", + "men_normal = np.random.normal(avg_weight, std_dev, sims)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "0c7d2409-ba08-4752-baab-f07cdc537084", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# 4. Gleichverteilung für tägliche Gewichtsschwankung (eine Woche simulieren)\n", + "gain_week = np.sum(daily_gain, axis=1)\n", + "gain_percent = np.mean(gain_week <= -3)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "a7e664fb-6925-4f42-af94-1dfc42f6def2", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# 5. Wahrscheinlichkeit berechnen, dass ein Mann 3 kg abnimmt\n", + "success = gain_week <= -3\n", + "gain_percent = np.sum(success) / sims # Anteil der Fälle, in denen Gewicht um ≥ 3 kg sinkt\n", + "gain_percent = round(gain_percent, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "1599a63c-d356-4af7-b557-254925a20f34", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# 6. Durchschnittliche Gewichtszunahme/-abnahme\n", + "duration = round(np.mean(gain_week), 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "2b6fd0c8-524d-4796-a483-f0af0e065025", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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2rWr8ut2hUKByMhI+Pr6YtSoUejRowe2bNmi8r5p06bh559/xoQJE1SGfah7zPWJxWLs2bMH6enpeOyxxzB37lysWbNG7eOoM3jwYHzwwQfYuHEj/Pz8kJSU1KD4DQ0NxYEDB5CUlIS//e1vGDx4MNavX6+cnaMpDg4O+OSTT3Do0CH06dMHn376KWJiYlqd47p16xAYGIinnnoKwcHBGDp0KHx9fZscc4x7c2SHh4dj9+7dTcb885//xM6dOzF9+nTs27cPAPDxxx/DxcUFw4YNw4QJEzBjxgxYW1urfFZqairu3LmDf/7zn60+FiJqOyKh/gAvIiKidqSiogIeHh545513EBER0WRcQUEBevfujXPnzrVY0Dfl5s2b6Ny5M77//nuMHDkSADBp0iT4+flh8eLFD3wMRKR5fHCPiIjalYyMDPz222/w9/fHnTt3EBcXBwB4+umnm32fq6srPvroI1y/fl3tIrnum4Y+ffogPz8fCxcuhJeXF4YNGwbcW+2wT58+mDt3rgaOjIg0iUUyERG1O2vXrkV2djYkEgkGDhyIkydPNvtgY53x48e36nPkcjkWL16Mq1evwtraGkOGDMHu3buVQ3IkEkmLY7GJSDc43IKIiIiIqB4+uEdEREREVA+LZCIiIiKielgkExERERHVwyKZiIiIiKgeFslERERERPWwSCYiIiIiqodFMhERERFRPSySiYiIiIjq+X/2mTbzmDG3mQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 7. Plot\n", + "plt.figure(figsize=(8, 4))\n", + "plt.hist(gain_week, bins=50, color='skyblue', edgecolor='black', alpha=0.7, label=\"Gewichtsveränderungen\")\n", + "plt.axvline(-3, color='red', linestyle='dashed', linewidth=2, label=\"-3kg Grenze\")\n", + "plt.axvline(duration, color='green', linestyle='solid', linewidth=2, label=f\"Ø Veränderung = {duration} kg\")\n", + "plt.title(f\"Monte-Carlo-Simulation: Gewichtsveränderung pro Woche\\nChance für -3 kg Abnahme: {gain_percent:.0%}\", fontsize=14)\n", + "plt.xlabel(\"Gewichtsveränderung (kg)\")\n", + "plt.ylabel(\"Häufigkeit\")\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "0ee157d2-1216-4380-94d1-1c1eccc6591e", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Durchschnittliches Gewicht: 85.4 kg\n", + "Durchschnittliche Gewichtsveränderung pro Woche: -0.0 kg\n", + "Wahrscheinlichkeit, dass ein Mann 3 kg in einer Woche abnimmt: 22%\n" + ] + } + ], + "source": [ + "# Ergebnis ausgeben\n", + "print(f\"Durchschnittliches Gewicht: {avg_weight} kg\")\n", + "print(f\"Durchschnittliche Gewichtsveränderung pro Woche: {duration} kg\")\n", + "print(f\"Wahrscheinlichkeit, dass ein Mann 3 kg in einer Woche abnimmt: {gain_percent:.0%}\")" + ] + }, + { + "cell_type": "markdown", + "id": "a546392a-32e1-44bb-8ae9-8694598c0ff6", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "Um die Berechnungen auf einer stabilen Grundlage durchzuführen, berechne ich zuerst das Durchschnittsgewicht. Dafür habe ich das arithmetische Mittel berechnet – das ist einfach die Summe aller Gewichte, geteilt durch die Anzahl der Altersgruppen. Das ergibt eine repräsentative Zahl, die den Durchschnitt aller Altersgruppen widerspiegelt.\n", + "\n", + "Bei der Verteilung der Gewichte in der Bevölkerung geht man hier von einer Normalverteilung aus. Das ist realistisch, weil das Gewicht der meisten Menschen um einen Durchschnittswert schwankt und dabei symmetrisch verteilt ist – mit wenigen Menschen, die deutlich leichter oder schwerer sind.\n", + "\n", + "Für die täglichen Schwankungen im Gewicht gehe ich von einer gleichmäßigen Verteilung aus. Das bedeutet, dass jede mögliche Gewichtszunahme oder -abnahme innerhalb eines Bereichs (z. B. ±2,5 kg) gleich wahrscheinlich ist. Diese Annahme wird getroffen, weil keine genauen Daten über andere Schwankungsmuster vorliegen.\n", + "\n", + "Der Plot zeigt die Verteilung der simulierten wöchentlichen Gewichtszunahmen/-abnahmen. Die rote Linie markiert die Grenze von -3 kg, und die grüne Linie zeigt die durchschnittliche Veränderung. Die Wahrscheinlichkeit, links von der roten Linie zu liegen, entspricht der berechneten Wahrscheinlichkeit von 22.08%." + ] + } + ], + "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 +} diff --git a/Material/wise_24_25/Folien/0.Einführung.pdf b/Material/wise_24_25/Folien/0.Einführung.pdf new file mode 100755 index 0000000..f4b712d Binary files /dev/null and b/Material/wise_24_25/Folien/0.Einführung.pdf differ diff --git a/Material/Tutorial1_Lösungen.html b/Material/wise_24_25/Folien/1.Tutorial1_Lösungen.html old mode 100644 new mode 100755 similarity index 100% rename from Material/Tutorial1_Lösungen.html rename to Material/wise_24_25/Folien/1.Tutorial1_Lösungen.html diff --git a/Material/3.Vorlesung.html b/Material/wise_24_25/Folien/2.Tutorial2_Lösungen.html old mode 100644 new mode 100755 similarity index 82% rename from Material/3.Vorlesung.html rename to Material/wise_24_25/Folien/2.Tutorial2_Lösungen.html index 0865276..1c54323 --- a/Material/3.Vorlesung.html +++ b/Material/wise_24_25/Folien/2.Tutorial2_Lösungen.html @@ -2,8 +2,24 @@ - -V3 + + + +V4 slides + + + + + @@ -7324,214 +7427,46 @@ a.anchor-link { } init_mathjax(); - - - + + +
-
+ diff --git a/Material/3.Extended_Applications_Lösungen.html b/Material/wise_24_25/Folien/3.Extended_Applications_Lösungen.html old mode 100644 new mode 100755 similarity index 100% rename from Material/3.Extended_Applications_Lösungen.html rename to Material/wise_24_25/Folien/3.Extended_Applications_Lösungen.html diff --git a/Material/wise_24_25/Folien/3.Lösungen_Extended_Applications.ipynb b/Material/wise_24_25/Folien/3.Lösungen_Extended_Applications.ipynb deleted file mode 100644 index 14df5b0..0000000 --- a/Material/wise_24_25/Folien/3.Lösungen_Extended_Applications.ipynb +++ /dev/null @@ -1,334 +0,0 @@ -{ - "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 -} diff --git a/Material/2.vorlesung.html b/Material/wise_24_25/Folien/4.NumPy_MatPlotLib_Lösungen.html similarity index 55% rename from Material/2.vorlesung.html rename to Material/wise_24_25/Folien/4.NumPy_MatPlotLib_Lösungen.html index ed794d9..d9c3b46 100644 --- a/Material/2.vorlesung.html +++ b/Material/wise_24_25/Folien/4.NumPy_MatPlotLib_Lösungen.html @@ -2,8 +2,24 @@ - -2.vorlesung + + + +4.NumPy_MatPlotLib_Lösungen slides + + + + + @@ -7324,281 +7427,36 @@ a.anchor-link { } init_mathjax(); - - - + + +
-
+ diff --git a/Material/SciPy_Lösungen.slides.html b/Material/wise_24_25/Folien/5.SciPy_Lösungen.slides.html old mode 100644 new mode 100755 similarity index 100% rename from Material/SciPy_Lösungen.slides.html rename to Material/wise_24_25/Folien/5.SciPy_Lösungen.slides.html diff --git a/Material/2.vorlesung.slides.html b/Material/wise_24_25/Folien/6.Lösungen_Monte_Carlo.html similarity index 68% rename from Material/2.vorlesung.slides.html rename to Material/wise_24_25/Folien/6.Lösungen_Monte_Carlo.html index 1ceb7ad..1a87d5e 100644 --- a/Material/2.vorlesung.slides.html +++ b/Material/wise_24_25/Folien/6.Lösungen_Monte_Carlo.html @@ -5,7 +5,7 @@ -2.vorlesung slides @@ -7434,1033 +7434,53 @@ main {
-
-
-
-
+
-
-
-
-
- -