From e4ec9fc2fa4920297518eb9f690253303b365247 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 21 Mar 2023 11:50:53 +0100 Subject: [PATCH 01/70] test --- docs/000Hello.ipynb | 74 ++++++++++++++++++++++++++++ docs/test.ipynb | 115 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 189 insertions(+) create mode 100644 docs/000Hello.ipynb create mode 100644 docs/test.ipynb diff --git a/docs/000Hello.ipynb b/docs/000Hello.ipynb new file mode 100644 index 0000000..6b8eb40 --- /dev/null +++ b/docs/000Hello.ipynb @@ -0,0 +1,74 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Willkommen zum Python Ausbildungsproramm.\n", + "Java solltest du bereits kennen. Begriffe wie Variable, Array, Methode sind dir keine Fremdwörter.\n", + "\n", + "Python ist einer der beliebtesten Programmiersprachen. Sie wurde 1991 von Guido van Rossum, einem niederländischen Softwareentwickler erschaffen.\n", + "Python wird oft in folgenden Bereichen angewendet:\n", + " Web development (server seitig)\n", + " Software entwicklung\n", + " mathematische Anwendungen\n", + " Systemskripting\n", + "\n", + "Eine Einzigartigkeit von Python ist die Leserlickeit. Python liest sich fast wie die englische Sprache, das wirst im Verlauf der Einführung noch merken.\n", + "\n", + "Wir starten nun direkt mit dem Klassiker, dem Hello World Programm." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Hello World!\") # Output: Hello World!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ziemlich simpel, oder? Die Methode print() nimmt einen String und gibt ihn in der Kommandozeile aus.\n", + "Jede print() Anweisung schreibt dabei auf eine neue Zeile. Beachte, das in Python keine Semikolons benutzt werden.\n", + "Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon.\n", + "Kommentare werden mit einem # Zeichen eingeleitet.\n", + "Eine main Methode wie in vielen anderen Programmiersprachen braucht es nicht.\n", + "\n", + "Ein sehr wichtiger Punkt, welcher Python von praktisch allen anderen Programmiersprachen unterscheidet ist, \n", + "dass Code-Blöcke nicht durch geschweifte Klammern (also \"{\" und \"}\") abgetrennt werden, sondern durch Einrückungen.\n", + "\n", + "Hier ein kleines Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if True:\n", + " print(\"x is 1.\")\n", + "\n", + "while False:\n", + " if True:\n", + " print(\"Hallo\")\n", + " else:\n", + " break" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/test.ipynb b/docs/test.ipynb new file mode 100644 index 0000000..cfc1756 --- /dev/null +++ b/docs/test.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Willkommen zum Python Ausbildungsproramm.\n", + "Java solltest du bereits kennen. Begriffe wie Variable, Array, Methode sind dir keine Fremdwörter.\n", + "\n", + "*Python* ist einer der beliebtesten Programmiersprachen. Sie wurde 1991 von Guido van Rossum, einem niederländischen Softwareentwickler erschaffen.\n", + "**Python** wird oft in folgenden Bereichen angewendet:\n", + "* Web development (server seitig)\n", + "* Software entwicklung\n", + "* mathematische Anwendungen\n", + "* Systemskripting\n", + "\n", + "Eine Einzigartigkeit von Python ist die Leserlickeit. Python liest sich fast wie die englische Sprache, das wirst im Verlauf der Einführung noch merken.\n", + "\n", + "Wir starten nun direkt mit dem Klassiker, dem Hello World Programm." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World!\n" + ] + } + ], + "source": [ + "print(\"Hello World!\") # Output: Hello World!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ziemlich simpel, oder? Die Methode print() nimmt einen String und gibt ihn in der Kommandozeile aus.\n", + "Jede print() Anweisung schreibt dabei auf eine neue Zeile. Beachte, das in Python keine Semikolons benutzt werden.\n", + "Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon.\n", + "Kommentare werden mit einem # Zeichen eingeleitet.\n", + "Eine main Methode wie in vielen anderen Programmiersprachen braucht es nicht.\n", + "\n", + "Ein sehr wichtiger Punkt, welcher Python von praktisch allen anderen Programmiersprachen unterscheidet ist, \n", + "dass Code-Blöcke nicht durch geschweifte Klammern (also \"{\" und \"}\") abgetrennt werden, sondern durch Einrückungen.\n", + "\n", + "Hier ein kleines Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x is 1.\n" + ] + } + ], + "source": [ + "if True:\n", + " print(\"x is 1.\")\n", + "\n", + "while False:\n", + " if True:\n", + " print(\"Hallo\")\n", + " else:\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From a00c345c55067692134a61cb398847298f5ccfb3 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 21 Mar 2023 11:52:03 +0100 Subject: [PATCH 02/70] bra --- docs/000Hello.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/000Hello.py b/docs/000Hello.py index 7178a5b..a7a96fa 100644 --- a/docs/000Hello.py +++ b/docs/000Hello.py @@ -27,9 +27,7 @@ Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon. Kommentare werden mit einem # Zeichen eingeleitet. Eine main Methode wie in vielen anderen Programmiersprachen braucht es nicht. -""" -""" Ein sehr wichtiger Punkt, welcher Python von praktisch allen anderen Programmiersprachen unterscheidet ist, dass Code-Blöcke nicht durch geschweifte Klammern (also "{" und "}") abgetrennt werden, sondern durch Einrückungen. From f31692f5fb7e99850866205378da66b1d76d468b Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 21 Mar 2023 12:15:33 +0100 Subject: [PATCH 03/70] changed files to ipynb --- docs/000Hello.py | 50 ---------- docs/010Variablen.ipynb | 178 +++++++++++++++++++++++++++++++++ docs/010Variablen.py | 111 --------------------- docs/015Strings.ipynb | 183 ++++++++++++++++++++++++++++++++++ docs/015Strings.py | 129 ------------------------ docs/020Lists.ipynb | 105 +++++++++++++++++++ docs/020Lists.py | 71 ------------- docs/030Basic_Operators.py | 62 ------------ docs/030Basic_Operstory.ipynb | 106 ++++++++++++++++++++ docs/040Conditions.ipynb | 57 +++++++++++ docs/040Conditions.py | 39 -------- docs/050Loops.ipynb | 76 ++++++++++++++ docs/050Loops.py | 48 --------- docs/060Functions.ipynb | 100 +++++++++++++++++++ docs/060Functions.py | 67 ------------- docs/080Dictionaries.ipynb | 89 +++++++++++++++++ docs/080Dictionaries.py | 61 +----------- 17 files changed, 895 insertions(+), 637 deletions(-) create mode 100644 docs/010Variablen.ipynb delete mode 100644 docs/010Variablen.py create mode 100644 docs/015Strings.ipynb delete mode 100644 docs/015Strings.py create mode 100644 docs/020Lists.ipynb delete mode 100644 docs/020Lists.py delete mode 100644 docs/030Basic_Operators.py create mode 100644 docs/030Basic_Operstory.ipynb create mode 100644 docs/040Conditions.ipynb delete mode 100644 docs/040Conditions.py create mode 100644 docs/050Loops.ipynb create mode 100644 docs/060Functions.ipynb delete mode 100644 docs/060Functions.py create mode 100644 docs/080Dictionaries.ipynb diff --git a/docs/000Hello.py b/docs/000Hello.py index a7a96fa..3fbbebd 100644 --- a/docs/000Hello.py +++ b/docs/000Hello.py @@ -1,53 +1,3 @@ -""" -Willkommen zum Python Ausbildungsproramm. -Java solltest du bereits kennen. Begriffe wie Variable, Array, Methode sind dir keine Fremdwörter. - -Python ist einer der beliebtesten Programmiersprachen. Sie wurde 1991 von Guido van Rossum, einem niederländischen Softwareentwickler erschaffen. -Python wird oft in folgenden Bereichen angewendet: - Web development (server seitig) - Software entwicklung - mathematische Anwendungen - Systemskripting - -Eine Einzigartigkeit von Python ist die Leserlickeit. Python liest sich fast wie die englische Sprache, das wirst im Verlauf der Einführung noch merken. - -Wir starten nun direkt mit dem Klassiker, dem Hello World Programm. -""" - -###################################################################### - - -print("Hello World!") # Output: Hello World! - - -###################################################################### -""" -Ziemlich simpel, oder? Die Methode print() nimmt einen String und gibt ihn in der Kommandozeile aus. -Jede print() Anweisung schreibt dabei auf eine neue Zeile. Beachte, das in Python keine Semikolons benutzt werden. -Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon. -Kommentare werden mit einem # Zeichen eingeleitet. -Eine main Methode wie in vielen anderen Programmiersprachen braucht es nicht. - -Ein sehr wichtiger Punkt, welcher Python von praktisch allen anderen Programmiersprachen unterscheidet ist, -dass Code-Blöcke nicht durch geschweifte Klammern (also "{" und "}") abgetrennt werden, sondern durch Einrückungen. - -Hier ein kleines Beispiel: -""" - -###################################################################### - -if True: - print("x is 1.") - -while False: - if True: - print("Hallo") - else: - break - -###################################################################### - - # https://www.learnpython.org/en/String_Formatting # https://www.learnpython.org/en/Basic_String_Operations # if, elif, else diff --git a/docs/010Variablen.ipynb b/docs/010Variablen.ipynb new file mode 100644 index 0000000..3dc1e28 --- /dev/null +++ b/docs/010Variablen.ipynb @@ -0,0 +1,178 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python werden variablen initialisiert, sobald sie einen Wert zugewiesen bekommen.\n", + "Es benötigt weder die Verwendung eines Keywords (wie z.B. new), Noch die Angabe eines Datentypen.\n", + "Dies ist nämlich nicht erforderlich, da alle variablen als Objekte angesehen werden. Python bestimmt im Hintergrund, um welchen Datentyp es sich hierbei handelt. \n", + "\n", + "Das Einfachste Beispiel lautet ganz einfach x = 5\n", + "\n", + "In Python ist es üblich ein sogenanntes Snake Case naming zu wählen, nicht wie in Java Camel oder Pascal Case.\n", + "Dabei werden Wörter einfach mit einem Unterstrich (also \"_\") getrennt. \n", + "Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben.\n", + "\n", + "Einige Beispiele für die Initialisierung und Operationen mit Variablen: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_int = 7\n", + "print(my_int) # Output: 7\n", + "\n", + "my_float = 7.0\n", + "print(my_float) # Output: 7.0\n", + "\n", + "my_float = float(my_int) # Typ-casting von int zu float\n", + "print(my_float) # Output: 7.0\n", + "\n", + "my_string1 = 'Hello' # Initialisierung eines Strings mit '\n", + "my_string2 = \"Hello\" # Initialisierung eines Strings mit \"\n", + "\n", + "# Initialisierung mit \", der Apostroph wird hier als character angesehen.\n", + "my_string3 = \"Don't worry about apostrophes\"\n", + "# Initialisierung mit ', Anführuns- und Schlusszeichen werden hier als character angesehen.\n", + "my_string4 = 'I just want to say \"Hello\"'\n", + "\n", + "my_int2 = 1\n", + "my_int3 = 2\n", + "my_int4 = my_int2 + my_int3\n", + "print(my_int4) # Output: 3\n", + "\n", + "\n", + "hello = \"hello\"\n", + "world = \"world\"\n", + "hello_world = hello + \" \" + world\n", + "print(hello_world) # Output: hello world" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aber Vorsicht! Zahlen können nicht mit Strings addiert werden! Folgender Code wirft einen Error:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "can only concatenate str (not \"int\") to str", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[1], line 5\u001b[0m\n\u001b[0;32m 2\u001b[0m my_number \u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n\u001b[0;32m 3\u001b[0m my_string \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mhello\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m----> 5\u001b[0m \u001b[39mprint\u001b[39m(my_string \u001b[39m+\u001b[39;49m my_number) \u001b[39m# TypeError\u001b[39;00m\n", + "\u001b[1;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str" + ] + } + ], + "source": [ + "# This will not work!\n", + "my_number = 1\n", + "my_string = \"hello\"\n", + "\n", + "print(my_string + my_number) # TypeError" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Der Fehler wird hier zu Laufzeit des Programms geworfen, der Compiler bemerkt den Fehler nämlich nicht.\n", + "Die Lösung des Problems sind sogenannte formatted Strings oder einfach f-Strings. Eine Möglichkeit ist die folgende:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_number = 1\n", + "my_string = \"hello\"\n", + "\n", + "# Output: my_number is 1 and my_string is \"hello\"\n", + "print(f'my_number is {my_number} and my_string is \"{my_string}\"')\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ein weiteres cooles Feature in Python ist die Mehrfachzuweisung. Folgende Beispiele sind valider Python code:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x, y, z = 10, 41, 5.0\n", + "a = b = c = \"Hello\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier wurde x der Wert 10, y der Wert 41 und z den Wert 5.0 zugewiesen.\n", + "In der zweiten Zeile wurde den Variablen a, b und c jeweils der String \"Hello\" zugewiesen.\n", + "\n", + "Zusatz: Casting\n", + "\n", + "Wie auch in anderen Programmiersprachen können Datentypen gecastet werden.\n", + "Folgend einige Beispiele, das Prinzip sollte klar sein:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = str(100) # a = '100'\n", + "b = int(4.2) # b = 4\n", + "c = float(7) # c = 7.0\n", + "d = int('42') # d = 42" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/010Variablen.py b/docs/010Variablen.py deleted file mode 100644 index cd9be92..0000000 --- a/docs/010Variablen.py +++ /dev/null @@ -1,111 +0,0 @@ -""" -In Python werden variablen initialisiert, sobald sie einen Wert zugewiesen bekommen. -Es benötigt weder die Verwendung eines Keywords (wie z.B. new), Noch die Angabe eines Datentypen. -Dies ist nämlich nicht erforderlich, da alle variablen als Objekte angesehen werden. Python bestimmt im Hintergrund, um welchen Datentyp es sich hierbei handelt. - -Das Einfachste Beispiel lautet ganz einfach x = 5 - -In Python ist es üblich ein sogenanntes Snake Case naming zu wählen, nicht wie in Java Camel oder Pascal Case. -Dabei werden Wörter einfach mit einem Unterstrich (also "_") getrennt. -Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben. - -Einige Beispiele für die Initialisierung und Operationen mit Variablen: -""" - -###################################################################### - -my_int = 7 -print(my_int) # Output: 7 - -my_float = 7.0 -print(my_float) # Output: 7.0 - -my_float = float(my_int) # Typ-casting von int zu float -print(my_float) # Output: 7.0 - -my_string1 = 'Hello' # Initialisierung eines Strings mit ' -my_string2 = "Hello" # Initialisierung eines Strings mit " - -# Initialisierung mit ", der Apostroph wird hier als character angesehen. -my_string3 = "Don't worry about apostrophes" -# Initialisierung mit ', Anführuns- und Schlusszeichen werden hier als character angesehen. -my_string4 = 'I just want to say "Hello"' - -my_int2 = 1 -my_int3 = 2 -my_int4 = my_int2 + my_int3 -print(my_int4) # Output: 3 - - -hello = "hello" -world = "world" -hello_world = hello + " " + world -print(hello_world) # Output: hello world - - -###################################################################### - -""" -Aber Vorsicht! Zahlen können nicht mit Strings addiert werden! Folgender Code wirft einen Error: -""" - -###################################################################### - -# This will not work! -my_number = 1 -my_string = "hello" - -# print(my_string + my_number) # TypeError - -###################################################################### - -""" -Der Fehler wird hier zu Laufzeit des Programms geworfen, der Compiler bemerkt den Fehler nämlich nicht. -Die Lösung des Problems sind sogenannte formatted Strings oder einfach f-Strings. Eine Möglichkeit ist die folgende: -""" - -###################################################################### - -my_number = 1 -my_string = "hello" - -print(f'my_number is {my_number} and my_string is "{my_string}"') -#Output: my_number is 1 and my_string is "hello" - -###################################################################### - -""" -Ein weiteres cooles Feature in Python ist die Mehrfachzuweisung. Folgende Beispiele sind valider Python code: -""" - -###################################################################### - -x, y, z = 10, 41, 5.0 -a = b = c = "Hello" - -###################################################################### - - -""" -Hier wurde x der Wert 10, y der Wert 41 und z den Wert 5.0 zugewiesen. -In der zweiten Zeile wurde den Variablen a, b und c jeweils der String "Hello" zugewiesen. -""" - - -""" -Zusatz: Casting - -Wie auch in anderen Programmiersprachen können Datentypen gecastet werden. -Folgend einige Beispiele, das Prinzip sollte klar sein: -""" - -###################################################################### - -a = str(100) # a = '100' -b = int(4.2) # b = 4 -c = float(7) # c = 7.0 -d = int('42') # d = 42 - -###################################################################### - - diff --git a/docs/015Strings.ipynb b/docs/015Strings.ipynb new file mode 100644 index 0000000..5a2f49e --- /dev/null +++ b/docs/015Strings.ipynb @@ -0,0 +1,183 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Strings können in Python mit einfachen oder doppelten Anführungszeichen initialisiert werden.\n", + "Ebenfalls ist es möglich, Strings über mehrere Zeilen mit dreifach doppelten oder dreifach einfachen Anführungszeichen zu initialisieren.\n", + "Hierbei werden die Leer- und Enterzeichen mitgespeichert. Ein String über 3 Zeilen wird bei einem print() Aufruf auch über 3 Zeilen in der Konsole ausgegeben.\n", + "Im nachfolgenden Code findest du ein paar Beispiele:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "random_string = \"Hello\"\n", + "random_string2 = 'World'\n", + "\n", + "random_multiline_string = \"\"\"Say\n", + "my\n", + "name!\"\"\"\n", + "\n", + "random_multiline_string2 = '''Hello\n", + "my name is\n", + "Jeff'''\n", + "\n", + "print(random_multiline_string2)\n", + "# Output:\n", + "# Hello\n", + "# my name is\n", + "# Jeff" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Strings sind wie Arrays! Man kann auf die Elemente (Character; Buchstaben) mit dem [] Operator zugreifen.\n", + "Ebenfalls kann man mit Loops über Strings iterieren oder die die Länge des Strings ausgeben lassen.\n", + "Welche Loops es gibt und wie man sie implementiert wird in einem späteren Kappitel behandelt.\n", + "Einige Operationen mit Strings sind im nachfolgenden Code zu finden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = \"Hello World!\"\n", + "print(len(a)) # 12\n", + "print(a[1]) # e\n", + "\n", + "# Jedes Zeichen wird auf einer separaten Zeile ausgegeben:\n", + "for x in a:\n", + " print(x)\n", + "\n", + "print(\"orl\" in a) # True\n", + "print(\"i\" not in a) # True" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine weitere coole Operation auf Strings ist das sogenannte \"Slicin\". \n", + "Wie der Name schon suggeriert, kann man Strings in verschiedene Teile zerlegen. Dabei nehmen wir aber nicht einzelne Buchstaben wie vorher,\n", + "sondern ganze Teile. Einige slicing Operationen sind:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "beispiel = \"Python ist eine tolle Programmiersprache!\"\n", + "\n", + "# Herausschneiden zwischen dem ersten und zweiten Index.\n", + "# Beachte, dass der Buchstabe mit dem 2. Index nicht inklusive ist.\n", + "print(beispiel[2:12]) # thon ist ei\n", + "print(beispiel[2:4]) # th\n", + "\n", + "# Herausschneiden der ersten Buchstaben\n", + "print(beispiel[:5]) # Pytho\n", + "print(beispiel[:20]) # Python ist eine toll\n", + "\n", + "# Weglassen der ersten Buchstaben\n", + "print(beispiel[4:]) # on ist eine tolle Programmiersprache!\n", + "print(beispiel[22:]) # Programmiersprache!\n", + "\n", + "# Start beim 8. letzten Buchstaben, Ende beim 5. letzten Buchstaben.\n", + "print(beispiel[-8:-5]) # spr\n", + "print(beispiel[-19:-10]) # Programmi" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie auch in Java hat Python einige vordefinierte Methoden auf Strings. Einige sind nachfolgend Aufgelistet:\n", + "Falls du noch weitere Methoden sehen möchtest gibt es hier eine grosse Liste: https://www.w3schools.com/python/python_strings_methods.asp" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "s = \"Python is fun!\"\n", + "\n", + "print(s.upper()) # PYTHON IS FUN!\n", + "print(s.lower()) # python is fun!\n", + "\n", + "# Ersetzen eines Substrings mit einem anderen Substring\n", + "print(s.replace(\"n\", \"m\")) # Pythom is fum!\n", + "print(s.replace(\" \", \"#\")) # Python#is#fun!\n", + "print(s.replace(\"Python\", \"Java\")) # Java is fun!\n", + "\n", + "# .strip() entfernt alle Leerzeichen am Anfang und am Ende\n", + "print(\" to many whitespaces \".strip()) # to many whitespaces\n", + "\n", + "# .split() gibt eine Liste mit substrings zurück.\n", + "print(s.split(\" \")) # ['Python', 'is', 'fun!']\n", + "print(s.split(\"n\")) # ['Pytho', ' is fu', '!']\n", + "print(s.split(\"is\")) # ['Python ', ' fun!']\n", + "\n", + "# Strings können mit dem + Operator aneinandergeheftet werden.\n", + "print(s + \" Java too!\") # Python is fun! Java too!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Escape Character\n", + "\n", + "Um Zeichen in einem String hinzufügen zu können, welche normalerweise nicht erlaubt sind, kann ein \\ verwendet werden.\n", + "Es gibt auch weitere spezielle Zeichen, welche mit Hilfe eines Backslashes in einen String eingefügt werden können." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ' muss nicht escaped werden, \" aber schon.\n", + "print(\"Es gibt einfache (') und doppelte (\\\") Anführungszeichen\")\n", + "# Hier ist es genau umgekehrt\n", + "print('Es gibt einfache (\\') und doppelte (\") Anführungszeichen')\n", + "# Escapen des Escape characters\n", + "print(\"Ich verwende ein \\\\, um zu escapen\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\n newline\n", + "\\t tab" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/015Strings.py b/docs/015Strings.py deleted file mode 100644 index 34e61d0..0000000 --- a/docs/015Strings.py +++ /dev/null @@ -1,129 +0,0 @@ -""" -Strings können in Python mit einfachen oder doppelten Anführungszeichen initialisiert werden. -Ebenfalls ist es möglich, Strings über mehrere Zeilen mit dreifach doppelten oder dreifach einfachen Anführungszeichen zu initialisieren. -Hierbei werden die Leer- und Enterzeichen mitgespeichert. Ein String über 3 Zeilen wird bei einem print() Aufruf auch über 3 Zeilen in der Konsole ausgegeben. -Im nachfolgenden Code findest du ein paar Beispiele: -""" -###################################################################### - -random_string = "Hello" -random_string2 = 'World' - -random_multiline_string = """Say -my -name!""" - -random_multiline_string2 = '''Hello -my name is -Jeff''' - -print(random_multiline_string2) -# Output: -# Hello -# my name is -# Jeff - -###################################################################### - -""" -Strings sind wie Arrays! Man kann auf die Elemente (Character; Buchstaben) mit dem [] Operator zugreifen. -Ebenfalls kann man mit Loops über Strings iterieren oder die die Länge des Strings ausgeben lassen. -Welche Loops es gibt und wie man sie implementiert wird in einem späteren Kappitel behandelt. -Einige Operationen mit Strings sind im nachfolgenden Code zu finden: -""" - -###################################################################### - -a = "Hello World!" -print(len(a)) # 12 -print(a[1]) # e - -# Jedes Zeichen wird auf einer separaten Zeile ausgegeben: -for x in a: - print(x) - -print("orl" in a) # True -print("i" not in a) # True -###################################################################### - -""" -Eine weitere coole Operation auf Strings ist das sogenannte "Slicin". -Wie der Name schon suggeriert, kann man Strings in verschiedene Teile zerlegen. Dabei nehmen wir aber nicht einzelne Buchstaben wie vorher, -sondern ganze Teile. Einige slicing Operationen sind: -""" - -###################################################################### - -beispiel = "Python ist eine tolle Programmiersprache!" - -# Herausschneiden zwischen dem ersten und zweiten Index. -# Beachte, dass der Buchstabe mit dem 2. Index nicht inklusive ist. -print(beispiel[2:12]) # thon ist ei -print(beispiel[2:4]) # th - -# Herausschneiden der ersten Buchstaben -print(beispiel[:5]) # Pytho -print(beispiel[:20]) # Python ist eine toll - -# Weglassen der ersten Buchstaben -print(beispiel[4:]) # on ist eine tolle Programmiersprache! -print(beispiel[22:]) # Programmiersprache! - -# Start beim 8. letzten Buchstaben, Ende beim 5. letzten Buchstaben. -print(beispiel[-8:-5]) # spr -print(beispiel[-19:-10]) # Programmi - -###################################################################### - -""" -Wie auch in Java hat Python einige vordefinierte Methoden auf Strings. Einige sind nachfolgend Aufgelistet: -Falls du noch weitere Methoden sehen möchtest gibt es hier eine grosse Liste: https://www.w3schools.com/python/python_strings_methods.asp -""" - -###################################################################### - -s = "Python is fun!" - -print(s.upper()) # PYTHON IS FUN! -print(s.lower()) # python is fun! - -# Ersetzen eines Substrings mit einem anderen Substring -print(s.replace("n", "m")) # Pythom is fum! -print(s.replace(" ", "#")) # Python#is#fun! -print(s.replace("Python", "Java")) # Java is fun! - -# .strip() entfernt alle Leerzeichen am Anfang und am Ende -print(" to many whitespaces ".strip()) # to many whitespaces - -# .split() gibt eine Liste mit substrings zurück. -print(s.split(" ")) # ['Python', 'is', 'fun!'] -print(s.split("n")) # ['Pytho', ' is fu', '!'] -print(s.split("is")) # ['Python ', ' fun!'] - -# Strings können mit dem + Operator aneinandergeheftet werden. -print(s + " Java too!") # Python is fun! Java too! - -###################################################################### - -""" -Escape Character - -Um Zeichen in einem String hinzufügen zu können, welche normalerweise nicht erlaubt sind, kann ein \ verwendet werden. -Es gibt auch weitere spezielle Zeichen, welche mit Hilfe eines Backslashes in einen String eingefügt werden können. -""" - -###################################################################### - -# ' muss nicht escaped werden, " aber schon. -print("Es gibt einfache (') und doppelte (\") Anführungszeichen") -# Hier ist es genau umgekehrt -print('Es gibt einfache (\') und doppelte (") Anführungszeichen') -# Escapen des Escape characters -print("Ich verwende ein \\, um zu escapen") - -###################################################################### - -""" -\n newline -\t tab -""" diff --git a/docs/020Lists.ipynb b/docs/020Lists.ipynb new file mode 100644 index 0000000..f74e414 --- /dev/null +++ b/docs/020Lists.ipynb @@ -0,0 +1,105 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python gibt es keine Arrays, dafür Listen. \n", + "Eine Liste (engl \"List\") ist im Prinzip ein Array, benutzt auch die gleiche Syntax wie ein Array in Java, hat aber die Funktionalitäten einer ArrayList.\n", + "Wir sehen im folgenden Code-Beispiel wie mit Listen gearbeitet werden kann. \n", + "Da in Python alle Variablen als Objekte gespeichert sind, kann man in eine Liste auch verschiedene Datentypen einfügen.\n", + "Aber Vorsicht! Dies ist nicht zu empfehlen und Fehleranfällig!\n", + "Einige Funktionen, wie zum Beispiel das Sortieren funktioniert nicht bei einer Liste mit unterschiedlichen Datentypen!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_list = [] # create an empty list\n", + "my_list.append(1) # add (int) 1 to the list\n", + "my_list.append(2)\n", + "my_list.append(\"Regenschirm\") # add (str) \"Regenschirm\" to the list\n", + "print(my_list[0]) # Output: 1\n", + "print(my_list[1]) # Output: 2\n", + "print(my_list[2]) # Output: Regenschirm\n", + "\n", + "my_list2 = [1, 2, \"Regenschirm\"] # initialize the same list directly\n", + "my_list2.pop(0) # Remove element at pos 0\n", + "\n", + "print(my_list2) # Output: [2, 'Regenschirm']" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel sieht man, dass das Printen einer Liste einfach mit print(list) machbar ist. Es braucht hierfür keine toString Methode wie z.B. in Java.\n", + "Hilfreiche Operationen bezüglich Listen sind die folgenden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "list_name = [] # leere Liste initialisieren\n", + "list_name = {\"element1\", \"element2\"} # Initialisierung mit Elementen\n", + "# Initialisierung mit Elementen via Konstruktor\n", + "list_name = list((\"element1\", \"element2\"))\n", + "\n", + "list_name.append(\"element\") # fügt ein Element am Ende hinzu\n", + "# fügt das Element an der angegebenen Position hinzu\n", + "list_name.insert(\"position\", \"element\")\n", + "\n", + "list_name.pop(\"position\") # löscht das Element an der angegebenen Position\n", + "list_name.remove(\"element\") # löscht das angegebene Element\n", + "list_name.clear() # löscht alle Elemente\n", + "\n", + "len(list_name) # gibt die Länge (anzahl Elemente) zurück\n", + "list_name.reverse() # dreht die Reihenfolge der Liste um\n", + "list_name.sort() # sortiert die Liste\n", + "\n", + "# gibt den Index des ersten elementes mit diesem Wert aus\n", + "list_name.index(\"element\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zusatz: \n", + "Wir haben zuvor die Mehrfachzuweisung von Variablen kennengelernt. \n", + "Diese können wir nun anwenden, um Werte direkt aus einer Liste zu extrahieren und in Variablen zu speichern.\n", + "Siehe folgendes Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "numbers = [31, 5007, 19]\n", + "x, y, z = numbers\n", + "print(x) # 31\n", + "print(y) # 5007\n", + "print(z) # 19" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/020Lists.py b/docs/020Lists.py deleted file mode 100644 index dad9f67..0000000 --- a/docs/020Lists.py +++ /dev/null @@ -1,71 +0,0 @@ -""" -In Python gibt es keine Arrays, dafür Listen. -Eine Liste (engl "List") ist im Prinzip ein Array, benutzt auch die gleiche Syntax wie ein Array in Java, hat aber die Funktionalitäten einer ArrayList. -Wir sehen im folgenden Code-Beispiel wie mit Listen gearbeitet werden kann. -Da in Python alle Variablen als Objekte gespeichert sind, kann man in eine Liste auch verschiedene Datentypen einfügen. -Aber Vorsicht! Dies ist nicht zu empfehlen und Fehleranfällig! -Einige Funktionen, wie zum Beispiel das Sortieren funktioniert nicht bei einer Liste mit unterschiedlichen Datentypen! - -""" - -###################################################################### -my_list = [] # create an empty list -my_list.append(1) # add (int) 1 to the list -my_list.append(2) -my_list.append("Regenschirm") # add (str) "Regenschirm" to the list -print(my_list[0]) # Output: 1 -print(my_list[1]) # Output: 2 -print(my_list[2]) # Output: Regenschirm - -my_list2 = [1, 2, "Regenschirm"] # initialize the same list directly -my_list2.pop(0) # Remove element at pos 0 - -print(my_list2) # Output: [2, 'Regenschirm'] - -###################################################################### - -""" -In diesem Beispiel sieht man, dass das Printen einer Liste einfach mit print(list) machbar ist. Es braucht hierfür keine toString Methode wie z.B. in Java. -Hilfreiche Operationen bezüglich Listen sind die folgenden: -""" - -###################################################################### - -list_name = [] # leere Liste initialisieren -list_name = {"element1", "element2"} # Initialisierung mit Elementen -# Initialisierung mit Elementen via Konstruktor -list_name = list(("element1", "element2")) - -list_name.append("element") # fügt ein Element am Ende hinzu -# fügt das Element an der angegebenen Position hinzu -list_name.insert("position", "element") - -list_name.pop("position") # löscht das Element an der angegebenen Position -list_name.remove("element") # löscht das angegebene Element -list_name.clear() # löscht alle Elemente - -len(list_name) # gibt die Länge (anzahl Elemente) zurück -list_name.reverse() # dreht die Reihenfolge der Liste um -list_name.sort() # sortiert die Liste - -# gibt den Index des ersten elementes mit diesem Wert aus -list_name.index("element") -###################################################################### - - -""" -Zusatz: -Wir haben zuvor die Mehrfachzuweisung von Variablen kennengelernt. -Diese können wir nun anwenden, um Werte direkt aus einer Liste zu extrahieren und in Variablen zu speichern. -Siehe folgendes Beispiel: -""" - -###################################################################### - -numbers = [31, 5007, 19] -x, y, z = numbers -print(x) # 31 -print(y) # 5007 -print(z) # 19 - -###################################################################### diff --git a/docs/030Basic_Operators.py b/docs/030Basic_Operators.py deleted file mode 100644 index 2756c04..0000000 --- a/docs/030Basic_Operators.py +++ /dev/null @@ -1,62 +0,0 @@ -""" -In diesem Abschnitt thematisieren wir grundlegende Operanden in Python. -Die +, -, *, / und % (modulo) Operanden auf Zahlen verhalten sich wie in Java. Es gilt ebenfalls Punkt vor Strich etc. -Es gibt zusätzlich den ** Operanden, welcher für das Potenzieren benutzt werden kann: -""" - -###################################################################### - -print(1 + 2 * 3 / 4) # Output: 2.5 -print(10 % 3) # Output: 1 - - -num1 = 3 ** 2 # = 3 * 3 = 9 -num2 = 2 ** 8 # = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 2^8 = 256 -print(num1) # 9 -print(num2) # 256 - -###################################################################### - -""" -Python unterstützt auch das Multiplizieren von Zeichenfolgen, um eine Zeichenfolge mit einer sich wiederholenden Sequenz zu bilden: -""" - -###################################################################### - -string1 = "bla" * 4 -print(string1) # Output: blablablaba - -###################################################################### - -""" -Dasselbe Prinzip funktioniert auch bei Listen : -""" - -###################################################################### - -my_list = [0, 100, 5000] * 3 -print(my_list) # Output: [0, 100, 5000, 0, 100, 5000, 0, 100, 5000] - -###################################################################### - - -""" -Mit dem + Operator können Listen vereinigt werden. Hierbei werden alle Elemente der zweiten Liste am Ende der ersten Liste hinzugefügt. -""" - -###################################################################### - -numbers = [0, 1, 2, 3] -large_numbers = [1001, 2000] -colors = ["red", "blue", "yellow"] - -big_list = numbers + large_numbers + colors - -# Output: [0, 1, 2, 3, 1001, 2000, 'red', 'blue', 'yellow'] -print(big_list) - -###################################################################### - -""" -Hier findest du eine Liste mit vielen Pthon Operatoren: https://www.w3schools.com/python/python_operators.asp -""" diff --git a/docs/030Basic_Operstory.ipynb b/docs/030Basic_Operstory.ipynb new file mode 100644 index 0000000..d921326 --- /dev/null +++ b/docs/030Basic_Operstory.ipynb @@ -0,0 +1,106 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Abschnitt thematisieren wir grundlegende Operanden in Python.\n", + "Die +, -, *, / und % (modulo) Operanden auf Zahlen verhalten sich wie in Java. Es gilt ebenfalls Punkt vor Strich etc.\n", + "Es gibt zusätzlich den ** Operanden, welcher für das Potenzieren benutzt werden kann:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(1 + 2 * 3 / 4) # Output: 2.5\n", + "print(10 % 3) # Output: 1\n", + "\n", + "\n", + "num1 = 3 ** 2 # = 3 * 3 = 9\n", + "num2 = 2 ** 8 # = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 2^8 = 256\n", + "print(num1) # 9\n", + "print(num2) # 256" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python unterstützt auch das Multiplizieren von Zeichenfolgen, um eine Zeichenfolge mit einer sich wiederholenden Sequenz zu bilden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "string1 = \"bla\" * 4\n", + "print(string1) # Output: blablablaba" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dasselbe Prinzip funktioniert auch bei Listen :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_list = [0, 100, 5000] * 3\n", + "print(my_list) # Output: [0, 100, 5000, 0, 100, 5000, 0, 100, 5000]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit dem + Operator können Listen vereinigt werden. Hierbei werden alle Elemente der zweiten Liste am Ende der ersten Liste hinzugefügt." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "numbers = [0, 1, 2, 3]\n", + "large_numbers = [1001, 2000]\n", + "colors = [\"red\", \"blue\", \"yellow\"]\n", + "\n", + "big_list = numbers + large_numbers + colors\n", + "\n", + "# Output: [0, 1, 2, 3, 1001, 2000, 'red', 'blue', 'yellow']\n", + "print(big_list)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier findest du eine Liste mit vielen Pthon Operatoren: https://www.w3schools.com/python/python_operators.asp" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/040Conditions.ipynb b/docs/040Conditions.ipynb new file mode 100644 index 0000000..ade02d2 --- /dev/null +++ b/docs/040Conditions.ipynb @@ -0,0 +1,57 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python gibt es natürlich auch bool'sche ausdrücke. Die meisten Operanden wie ==, <=, <, >, >=, != sollten bekannt sein und funktionieren gleich wie in Java.\n", + "Zusätzlich gibt es folgende Operatoren:\n", + "\n", + "and Funktioniert analog dem && Operator aus Java\n", + "or Funktioniert analog dem || Operator aus Java\n", + "in Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False\n", + "is Im Gegensatz zum „==“ vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", + "not Negiert einen bool'schen Ausdruck\n", + "\n", + "Im Folenden Beispiele werden alle print statements ausgeführt, weil alle if-Bedinungen zu True evaluieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = True\n", + "b = False\n", + "\n", + "x = [1, 2, 3]\n", + "y = [1, 2, 3]\n", + "\n", + "print(x == y) # Output: True\n", + "print(x is y) # Output: False\n", + "\n", + "if a and b == False:\n", + " print(\"a is True and b is False.\")\n", + "\n", + "if a or b:\n", + " print(\"Either a, b or both of them are True.\")\n", + "\n", + "if 1 in x:\n", + " print(\"1 is in x.\")\n", + "\n", + "if not b:\n", + " print(\"b is false.\")" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/040Conditions.py b/docs/040Conditions.py deleted file mode 100644 index e044531..0000000 --- a/docs/040Conditions.py +++ /dev/null @@ -1,39 +0,0 @@ -""" -In Python gibt es natürlich auch bool'sche ausdrücke. Die meisten Operanden wie ==, <=, <, >, >=, != sollten bekannt sein und funktionieren gleich wie in Java. -Zusätzlich gibt es folgende Operatoren: - -and Funktioniert analog dem && Operator aus Java -or Funktioniert analog dem || Operator aus Java -in Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False -is Im Gegensatz zum „==“ vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten. -not Negiert einen bool'schen Ausdruck - -Im Folenden Beispiele werden alle print statements ausgeführt, weil alle if-Bedinungen zu True evaluieren: -""" - -###################################################################### - -a = True -b = False - -x = [1, 2, 3] -y = [1, 2, 3] - -print(x == y) # Output: True -print(x is y) # Output: False - -if a and b == False: - print("a is True and b is False.") - -if a or b: - print("Either a, b or both of them are True.") - -if 1 in x: - print("1 is in x.") - -if not b: - print("b is false.") - - -###################################################################### - diff --git a/docs/050Loops.ipynb b/docs/050Loops.ipynb new file mode 100644 index 0000000..6e41677 --- /dev/null +++ b/docs/050Loops.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For-Loop\n", + "\n", + "Es gibt mehrere Möglichkeiten, einen For-Loop in Python zu implementieren. \n", + "Eine Möglichkeit ist die Benutzung der range() methode, welche wiederum selbst verschieden eingesetzt werden kann. \n", + "Eine andere Möglichkeit ist einfach über alle Elemente einer Liste (oder auch eines Sets, Dictionarys, ...) zu iterieren.\n", + "Beachte den Doppelpunkt und die Einrückung des Bodys.\n", + "Das Nachfolgende Beispiel sollte Klarheit verschaffen." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(10): # i = 0, 1, 2, ... , 9\n", + " print(i)\n", + "\n", + "for i in range(3, 8): # i = 3, 4, 5, 6, 7\n", + " print(i)\n", + "\n", + "for i in range(2, 9, 3): # i = 2, 5, 8\n", + " print(i)\n", + "\n", + "numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", + "for number in numbers: # prints out every number in the numbers list\n", + " print(number)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While-Loop\n", + "\n", + "Der While Loop funktioniert genau wie in Java auch. Hier ein Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "i = 0\n", + "while i < 5:\n", + " print(i)\n", + " i += 1" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Statements \"break\" and \"continue\" sollten bekannt sein und funktionieren ebenfalls wie in Java." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/050Loops.py b/docs/050Loops.py index 42f6597..de0245a 100644 --- a/docs/050Loops.py +++ b/docs/050Loops.py @@ -1,50 +1,2 @@ -""" -For-Loop - -Es gibt mehrere Möglichkeiten, einen For-Loop in Python zu implementieren. -Eine Möglichkeit ist die Benutzung der range() methode, welche wiederum selbst verschieden eingesetzt werden kann. -Eine andere Möglichkeit ist einfach über alle Elemente einer Liste (oder auch eines Sets, Dictionarys, ...) zu iterieren. -Beachte den Doppelpunkt und die Einrückung des Bodys. -Das Nachfolgende Beispiel sollte Klarheit verschaffen. -""" - -###################################################################### - -for i in range(10): # i = 0, 1, 2, ... , 9 - print(i) - -for i in range(3, 8): # i = 3, 4, 5, 6, 7 - print(i) - -for i in range(2, 9, 3): # i = 2, 5, 8 - print(i) - -numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -for number in numbers: # prints out every number in the numbers list - print(number) - -###################################################################### - -""" -While-Loop - -Der While Loop funktioniert genau wie in Java auch. Hier ein Beispiel: - -""" - -###################################################################### - -i = 0 -while i < 5: - print(i) - i += 1 - -###################################################################### - -""" -Die Statements "break" and "continue" sollten bekannt sein und funktionieren ebenfalls wie in Java. -""" - - # https://www.learnpython.org/en/Loops # Can we use "else" clause for loops? diff --git a/docs/060Functions.ipynb b/docs/060Functions.ipynb new file mode 100644 index 0000000..4e60f73 --- /dev/null +++ b/docs/060Functions.ipynb @@ -0,0 +1,100 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kommen wir zum Thema Funktionen.\n", + "Eine Funktion in Python ist das, was wir in Java eine Methode nennen. Das Gundprinzip sollte klar sein.\n", + "Funktionen werden immer mit dem keyword \"def\" definiert. Bei einer Funktion des Typs void (ohne Rückgabewert) braucht es kein zusätzliches Keyword.\n", + "Eine Funktion ist in Python folgendermassen aufgebaut:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def funktion_name(arg1, arg2):\n", + " # body\n", + " return # can be omited" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zwei Beispiele könnten die Folgenden sein:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_hello():\n", + " print(\"Hello\")\n", + "\n", + "\n", + "def sum(i, j):\n", + " return i + j\n", + "\n", + "\n", + "# Call the defined functions\n", + "print_hello()\n", + "print(sum(1, 6))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Es können noch einige zusätziche Informationen bei der Definition angegeben werden, wie Beispielsweise\n", + "Ein Docstring (Beschreibung der Funktion), ein Return Datentyp und Datentypen der Parameter.\n", + "Die Funktionen von Oben könnten also wie folgt angepasst werden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_hello() -> None:\n", + " \"\"\"Prints 'Hello' to the console\"\"\"\n", + " print(\"Hello\")\n", + "\n", + "\n", + "def sum(i: int, j: int) -> int:\n", + " \"\"\"Returns the sum of i and j\"\"\"\n", + " return i + j" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dies ist aber nur eine Information und hat keinen Einfluss auf das Programm oder den Compiler!\n", + "Der Funktionaufruf sum(1, \"green\") würde ausgeführt und das Programm einen Fehler werfen!\n", + "Daher ist es von Vorteil, Docstrings sowie Paremeter und Rückgabetypen anzugeben, um während dem Code Schreiben mögliche Fehler besser zu erkennen.\n", + "Durch hovern über die Methode sind diese Informationen ersichtlich.\n", + "\n", + "Eine Liste mit Datentypen in Python gibt es hier: https://www.w3schools.com/python/python_datatypes.asp" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/060Functions.py b/docs/060Functions.py deleted file mode 100644 index 53359da..0000000 --- a/docs/060Functions.py +++ /dev/null @@ -1,67 +0,0 @@ -""" -Kommen wir zum Thema Funktionen. -Eine Funktion in Python ist das, was wir in Java eine Methode nennen. Das Gundprinzip sollte klar sein. -Funktionen werden immer mit dem keyword "def" definiert. Bei einer Funktion des Typs void (ohne Rückgabewert) braucht es kein zusätzliches Keyword. -Eine Funktion ist in Python folgendermassen aufgebaut: -""" - -###################################################################### - - -def funktion_name(arg1, arg2): - # body - return # can be omited - -###################################################################### - - -""" -Zwei Beispiele könnten die Folgenden sein: -""" - -###################################################################### - - -def print_hello(): - print("Hello") - - -def sum(i, j): - return i + j - - -# Call the defined functions -print_hello() -print(sum(1, 6)) - - -###################################################################### - -""" -Es können noch einige zusätziche Informationen bei der Definition angegeben werden, wie Beispielsweise -Ein Docstring (Beschreibung der Funktion), ein Return Datentyp und Datentypen der Parameter. -Die Funktionen von Oben könnten also wie folgt angepasst werden: -""" - -###################################################################### - - -def print_hello() -> None: - """Prints 'Hello' to the console""" - print("Hello") - - -def sum(i: int, j: int) -> int: - """Returns the sum of i and j""" - return i + j - - -###################################################################### -""" -Dies ist aber nur eine Information und hat keinen Einfluss auf das Programm oder den Compiler! -Der Funktionaufruf sum(1, "green") würde ausgeführt und das Programm einen Fehler werfen! -Daher ist es von Vorteil, Docstrings sowie Paremeter und Rückgabetypen anzugeben, um während dem Code Schreiben mögliche Fehler besser zu erkennen. -Durch hovern über die Methode sind diese Informationen ersichtlich. - -Eine Liste mit Datentypen in Python gibt es hier: https://www.w3schools.com/python/python_datatypes.asp -""" diff --git a/docs/080Dictionaries.ipynb b/docs/080Dictionaries.ipynb new file mode 100644 index 0000000..cabd4df --- /dev/null +++ b/docs/080Dictionaries.ipynb @@ -0,0 +1,89 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dictionaries funktionieren ähnlich wie Arrays (bzw. Listen). Der Zugriff auf den Inhalt erfolgt aber mit Schlüsseln (sogenannte Keys) und nicht mit indexen.\n", + "Im Folgenden Beispiel wird ein Dictionary mit email-addressen von Personen erstellt." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "email_database = {} # initialize empty dictionary\n", + "\n", + "# add a new entry with key \"John\" and value \"John.Guildmore@gmail.com\"\n", + "email_database[\"John\"] = \"John.Guildmore@gmail.com\"\n", + "\n", + "email_database[\"Jack\"] = \"jack_reacher@hotmail.com\"\n", + "\n", + "print(email_database[\"John\"]) # John.Guildmore@gmail.com\n", + "print(email_database)\n", + "# {'John': 'John.Guildmore@gmail.com', 'Jack': 'jack_reacher@hotmail.com'}" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Natürlich kann man dasselbe Dictionary auch direkt befüllt initialisieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "email_database = {\n", + " \"John\": \"John.Guildmore@gmail.com\",\n", + " \"Jack\": \"jack_reacher@hotmail.com\"\n", + "}" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Einige wichtige Operationen mit Dictionaries sind:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dict_name = {} # Leeres Dictionary erzeugen\n", + "\n", + "dict_name[\"Key\"] = \"value\" # Einfügen bzw. ändern eines Elements\n", + "dict_name.update({\"key\": \"value\"}) # Einfügen bzw. ändern eines Elements\n", + "del dict_name[\"Key\"] # Eintrag löschen\n", + "dict_name.pop(\"key\") # Eintrag löschen\n", + "dict_name.popitem() # löscht den letzten hinzugefügten Eintrag\n", + "dict_name.clear() # Löschen aller Elemente\n", + "\n", + "# gibt den entsprechenden value zurück oder false, falls er nicht existiert\n", + "dict_name.get(\"key\")\n", + "dict_name.items() # gibt eine liste mit allen keys und values als tupel zurück\n", + "dict_name.keys() # gibt ein liste mit allen keys zurück\n", + "dict_name.values() # gibt eine liste mit allen values zurück" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/080Dictionaries.py b/docs/080Dictionaries.py index d00e6d9..475f278 100644 --- a/docs/080Dictionaries.py +++ b/docs/080Dictionaries.py @@ -1,60 +1 @@ -""" -Dictionaries funktionieren ähnlich wie Arrays (bzw. Listen). Der Zugriff auf den Inhalt erfolgt aber mit Schlüsseln (sogenannte Keys) und nicht mit indexen. -Im Folgenden Beispiel wird ein Dictionary mit email-addressen von Personen erstellt. -""" - -###################################################################### - -email_database = {} # initialize empty dictionary - -# add a new entry with key "John" and value "John.Guildmore@gmail.com" -email_database["John"] = "John.Guildmore@gmail.com" - -email_database["Jack"] = "jack_reacher@hotmail.com" - -print(email_database["John"]) # John.Guildmore@gmail.com -print(email_database) -# {'John': 'John.Guildmore@gmail.com', 'Jack': 'jack_reacher@hotmail.com'} - - -###################################################################### - -""" -Natürlich kann man dasselbe Dictionary auch direkt befüllt initialisieren: -""" - -###################################################################### - -email_database = { - "John": "John.Guildmore@gmail.com", - "Jack": "jack_reacher@hotmail.com" -} - -###################################################################### - -""" -Einige wichtige Operationen mit Dictionaries sind: -""" - -###################################################################### - -dict_name = {} # Leeres Dictionary erzeugen - -dict_name["Key"] = "value" # Einfügen bzw. ändern eines Elements -dict_name.update({"key": "value"}) # Einfügen bzw. ändern eines Elements -del dict_name["Key"] # Eintrag löschen -dict_name.pop("key") # Eintrag löschen -dict_name.popitem() # löscht den letzten hinzugefügten Eintrag -dict_name.clear() # Löschen aller Elemente - -# gibt den entsprechenden value zurück oder false, falls er nicht existiert -dict_name.get("key") -dict_name.items() # gibt eine liste mit allen keys und values als tupel zurück -dict_name.keys() # gibt ein liste mit allen keys zurück -dict_name.values() # gibt eine liste mit allen values zurück - -###################################################################### - - -# https://www.w3schools.com/python/python_ref_dictionary.asp - +# https://www.w3schools.com/python/python_ref_dictionary.asp \ No newline at end of file From 82e0175caac8a9995e2de1917a815a1da340ff52 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 21 Mar 2023 12:25:01 +0100 Subject: [PATCH 04/70] bra --- docs/050Loops.ipynb | 68 ++++++++++++++++++++++++++++++++++---- docs/050Loops.py | 2 -- docs/080Dictionaries.ipynb | 8 +++++ docs/080Dictionaries.py | 1 - 4 files changed, 69 insertions(+), 10 deletions(-) delete mode 100644 docs/050Loops.py delete mode 100644 docs/080Dictionaries.py diff --git a/docs/050Loops.ipynb b/docs/050Loops.ipynb index 6e41677..5d81431 100644 --- a/docs/050Loops.ipynb +++ b/docs/050Loops.ipynb @@ -11,7 +11,7 @@ "Eine Möglichkeit ist die Benutzung der range() methode, welche wiederum selbst verschieden eingesetzt werden kann. \n", "Eine andere Möglichkeit ist einfach über alle Elemente einer Liste (oder auch eines Sets, Dictionarys, ...) zu iterieren.\n", "Beachte den Doppelpunkt und die Einrückung des Bodys.\n", - "Das Nachfolgende Beispiel sollte Klarheit verschaffen." + "Das Nachfolgende Beispiel zeigt einige for loops." ] }, { @@ -46,14 +46,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n" + ] + } + ], "source": [ "i = 0\n", - "while i < 5:\n", + "while i < 3:\n", " print(i)\n", - " i += 1" + " i += 1\n", + "\n", + "#output: 0, 1, 2" ] }, { @@ -61,13 +73,55 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Statements \"break\" and \"continue\" sollten bekannt sein und funktionieren ebenfalls wie in Java." + "Die Statements \"break\" and \"continue\" sollten bekannt sein und funktionieren ebenfalls wie in Java:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "3\n", + "4\n" + ] + } + ], + "source": [ + "i = 0\n", + "while True:\n", + " i += 1\n", + " if i == 2:\n", + " continue\n", + " if i >= 5:\n", + " break\n", + " print(i)\n", + "\n", + "#output: 1, 3, 4" ] } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" }, "orig_nbformat": 4 }, diff --git a/docs/050Loops.py b/docs/050Loops.py deleted file mode 100644 index de0245a..0000000 --- a/docs/050Loops.py +++ /dev/null @@ -1,2 +0,0 @@ -# https://www.learnpython.org/en/Loops -# Can we use "else" clause for loops? diff --git a/docs/080Dictionaries.ipynb b/docs/080Dictionaries.ipynb index cabd4df..d11dc51 100644 --- a/docs/080Dictionaries.ipynb +++ b/docs/080Dictionaries.ipynb @@ -76,6 +76,14 @@ "dict_name.keys() # gibt ein liste mit allen keys zurück\n", "dict_name.values() # gibt eine liste mit allen values zurück" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Weitere Operationen auf Dictionaries findest du hier: https://www.w3schools.com/python/python_ref_dictionary.asp" + ] } ], "metadata": { diff --git a/docs/080Dictionaries.py b/docs/080Dictionaries.py deleted file mode 100644 index 475f278..0000000 --- a/docs/080Dictionaries.py +++ /dev/null @@ -1 +0,0 @@ -# https://www.w3schools.com/python/python_ref_dictionary.asp \ No newline at end of file From 4a4e271aa7d1f0b90fcdaa081d33a77756268d64 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 21 Mar 2023 15:27:25 +0100 Subject: [PATCH 05/70] bra --- docs/010Variablen.ipynb | 22 +++++----------------- docs/030Basic_Operstory.ipynb | 2 +- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/docs/010Variablen.ipynb b/docs/010Variablen.ipynb index 3dc1e28..ed1662f 100644 --- a/docs/010Variablen.ipynb +++ b/docs/010Variablen.ipynb @@ -58,26 +58,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Aber Vorsicht! Zahlen können nicht mit Strings addiert werden! Folgender Code wirft einen Error:\n" + "Aber Vorsicht! Zahlen können nicht mit Strings addiert werden! Folgender Code wirft einen Error:" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "can only concatenate str (not \"int\") to str", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[1], line 5\u001b[0m\n\u001b[0;32m 2\u001b[0m my_number \u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n\u001b[0;32m 3\u001b[0m my_string \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mhello\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m----> 5\u001b[0m \u001b[39mprint\u001b[39m(my_string \u001b[39m+\u001b[39;49m my_number) \u001b[39m# TypeError\u001b[39;00m\n", - "\u001b[1;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str" - ] - } - ], + "outputs": [], "source": [ "# This will not work!\n", "my_number = 1\n", @@ -105,7 +93,7 @@ "my_string = \"hello\"\n", "\n", "# Output: my_number is 1 and my_string is \"hello\"\n", - "print(f'my_number is {my_number} and my_string is \"{my_string}\"')\n" + "print(f'my_number is {my_number} and my_string is \"{my_string}\"')" ] }, { @@ -113,7 +101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ein weiteres cooles Feature in Python ist die Mehrfachzuweisung. Folgende Beispiele sind valider Python code:\n" + "Ein weiteres cooles Feature in Python ist die Mehrfachzuweisung. Folgende Beispiele sind valider Python code:" ] }, { diff --git a/docs/030Basic_Operstory.ipynb b/docs/030Basic_Operstory.ipynb index d921326..20aa63b 100644 --- a/docs/030Basic_Operstory.ipynb +++ b/docs/030Basic_Operstory.ipynb @@ -91,7 +91,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hier findest du eine Liste mit vielen Pthon Operatoren: https://www.w3schools.com/python/python_operators.asp" + "Hier findest du eine Liste mit vielen Python Operatoren: https://www.w3schools.com/python/python_operators.asp" ] } ], From 15cf6d5c8f9695e16f72fd724a66e6925d65ea56 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 21 Mar 2023 16:02:51 +0100 Subject: [PATCH 06/70] added sets theory --- docs/025Sets.ipynb | 177 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 docs/025Sets.ipynb diff --git a/docs/025Sets.ipynb b/docs/025Sets.ipynb new file mode 100644 index 0000000..1202634 --- /dev/null +++ b/docs/025Sets.ipynb @@ -0,0 +1,177 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python-Sets sind eine unglaublich nützliche Datenstruktur, mit der man ungeordnete, eindeutige Elemente speichern kann. Sie ähneln Listen und Tupeln, aber Sets können keine doppelten Werte enthalten. In dieser Einführung werden wir die Grundlagen zum Erstellen und Verwenden von Sets sowie einige gängige Set-Operationen behandeln.\n", + "\n", + "# Ein Set erstellen\n", + "Es gibt zwei Möglichkeiten, ein Set in Python zu erstellen: Mit der Funktion **set()** oder mit geschweiften Klammern **{}**." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "set()\n", + "{'apple', 'banana', 'orange'}\n", + "{1, 2, 3, 4}\n", + "{'red', 'blue', 'green'}\n", + "{False, True, 2, 3, 'hello'}\n" + ] + } + ], + "source": [ + "# Creating an empty set\n", + "empty_set = set()\n", + "print(empty_set) # Output: set()\n", + "\n", + "# Creating a set using curly braces\n", + "fruits = {\"apple\", \"banana\", \"orange\"}\n", + "print(fruits) # Output: {'apple', 'banana', 'orange'}\n", + "\n", + "# Creating a set from a list using the set() function\n", + "numbers_list = [1, 2, 2, 3, 4, 4]\n", + "unique_numbers = set(numbers_list)\n", + "print(unique_numbers) # Output: {1, 2, 3, 4}\n", + "\n", + "# A set does not contain dublicates\n", + "color_set = {\"green\", \"blue\", \"red\", \"green\"}\n", + "print(color_set) # Output: {'red', 'blue', 'green'}\n", + "\n", + "# The values True and 1 are considered the same value in sets, and are treated as duplicates:\n", + "# Same goes for 0 and False\n", + "test_set = {\"hello\", True, 1, 2, 3, False, 0}\n", + "print(test_set) # Output: {False, True, 2, 3, 'hello'}\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Grundlegende Set-Operationen\n", + "Sets haben integrierte Methoden, mit denen Sie verschiedene Operationen ausführen können, wie das Hinzufügen von Elementen, das Entfernen von Elementen und das Überprüfen, ob ein Element in einem Set enthalten ist." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'apple', 'grape', 'orange'}\n" + ] + }, + { + "ename": "KeyError", + "evalue": "'banana'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[11], line 6\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39mprint\u001b[39m(fruits) \u001b[39m# Output: {'apple', 'banana', 'orange', 'grape'}\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39m# Removing an element from a set\u001b[39;00m\n\u001b[1;32m----> 6\u001b[0m fruits\u001b[39m.\u001b[39;49mremove(\u001b[39m\"\u001b[39;49m\u001b[39mbanana\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n\u001b[0;32m 7\u001b[0m \u001b[39mprint\u001b[39m(fruits) \u001b[39m# Output: {'apple', 'orange', 'grape'}\u001b[39;00m\n\u001b[0;32m 9\u001b[0m \u001b[39m# Checking if an element is in a set\u001b[39;00m\n", + "\u001b[1;31mKeyError\u001b[0m: 'banana'" + ] + } + ], + "source": [ + "fruits = {\"apple\", \"banana\", \"orange\"}\n", + "\n", + "# Adding an element to a set\n", + "fruits.add(\"grape\")\n", + "print(fruits) # Output: {'apple', 'banana', 'orange', 'grape'}\n", + "\n", + "# Removing an element from a set\n", + "fruits.remove(\"banana\")\n", + "print(fruits) # Output: {'apple', 'orange', 'grape'}\n", + "\n", + "# Checking if an element is in a set\n", + "print(\"apple\" in fruits) # Output: True\n", + "\n", + "# Getting the length of a set\n", + "print(len(fruits)) # Output: 3\n", + "\n", + "# Looping over all elements of a set\n", + "for x in fruits:\n", + " print(x)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Häufige Set-Operationen\n", + "Python-Sets unterstützen auch häufige mathematische Set-Operationen wie Vereinigung, Schnittmenge, Differenz und symmetrische Differenz." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Two sets of numbers\n", + "even_numbers = {2, 4, 6, 8, 10}\n", + "odd_numbers = {1, 3, 5, 7, 9}\n", + "\n", + "# Union of two sets\n", + "all_numbers = even_numbers.union(odd_numbers)\n", + "print(all_numbers) # Output: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}\n", + "\n", + "# Intersection of two sets\n", + "common_numbers = {1, 2, 3, 4}.intersection({3, 4, 5, 6})\n", + "print(common_numbers) # Output: {3, 4}\n", + "\n", + "# Difference of two sets\n", + "diff_numbers = {1, 2, 3, 4}.difference({3, 4, 5, 6})\n", + "print(diff_numbers) # Output: {1, 2}\n", + "\n", + "# Symmetric difference of two sets\n", + "sym_diff_numbers = {1, 2, 3, 4}.symmetric_difference({3, 4, 5, 6})\n", + "print(sym_diff_numbers) # Output: {1, 2, 5, 6}" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Weitere Methoden auf Sets findest du hier: https://www.w3schools.com/python/python_sets_methods.asp" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9d7482b664e723b78f04a02f9629b1eb92b0f8cb Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 08:24:31 +0100 Subject: [PATCH 07/70] bra --- docs/000Hello.py | 1 - docs/015Strings.ipynb | 8 ++++- docs/020Lists.ipynb | 80 ++++++++++++++++++++++++++++++++++++++++++- docs/025Sets.ipynb | 21 +++++------- 4 files changed, 94 insertions(+), 16 deletions(-) diff --git a/docs/000Hello.py b/docs/000Hello.py index 3fbbebd..8d74c41 100644 --- a/docs/000Hello.py +++ b/docs/000Hello.py @@ -4,7 +4,6 @@ # generators # input # imports -# set https://www.w3schools.com/python/python_tuples.asp # tuple https://www.w3schools.com/python/python_tuples.asp diff --git a/docs/015Strings.ipynb b/docs/015Strings.ipynb index 5a2f49e..16dae17 100644 --- a/docs/015Strings.ipynb +++ b/docs/015Strings.ipynb @@ -173,8 +173,14 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "name": "python", + "version": "3.9.13" }, "orig_nbformat": 4 }, diff --git a/docs/020Lists.ipynb b/docs/020Lists.ipynb index f74e414..a270b24 100644 --- a/docs/020Lists.ipynb +++ b/docs/020Lists.ipynb @@ -69,6 +69,70 @@ "list_name.index(\"element\")" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Listen-Komprehensionen\n", + "Listen-Komprehensionen in Python sind eine Möglichkeit, um neue Listen auf Basis von existierenden iterierbaren Objekten zu erstellen. Sie bestehen aus einer einzigen Codezeile, welche die Operation angibt, die auf jedem Element des iterierbaren Objekts durchgeführt werden soll. Die resultierende Liste wird on-the-fly generiert und als einzelner Ausdruck zurückgegeben.\n", + "\n", + "Im Allgemeinen hat eine Listen-Komprehension die folgende Syntax:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[expression for variable in iterable]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hierbei ist expression ein beliebiger, gültiger Python-Ausdruck, welcher einen Wert produziert. variable ist der Name der Schleifenvariable, welche jeden Wert in iterable annimmt. iterable ist ein iterierbares Objekt (z.B. eine Liste, ein Tuple, ein Range-Objekt), welches die Werte für variable generiert.\n", + "\n", + "Die Listen-Komprehension erzeugt dann eine neue Liste, indem der expression auf jeden Wert von variable in iterable angewendet wird.\n", + "\n", + "Zum Beispiel generiert die Listen-Komprehension [i * 2 for i in range(5)] die Liste [0, 2, 4, 6, 8], indem sie den Ausdruck i * 2 auf jeden Wert von i im Bereich von 0 bis 4 anwendet.\n", + "\n", + "Hier sind noch ein paar weitere Beispiele von Listen-Komprehensionen:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", + "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", + "[('Apfel', 5), ('Banane', 6), ('Kirsche', 7)]\n" + ] + } + ], + "source": [ + "# Quadrate von Zahlen von 1 bis 10\n", + "quadrat = [i ** 2 for i in range(1, 11)]\n", + "print(quadrat) # Ausgabe: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", + "\n", + "# Gerade Zahlen von 0 bis 20\n", + "gerade_zahlen = [i for i in range(21) if i % 2 == 0]\n", + "print(gerade_zahlen) # Ausgabe: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", + "\n", + "# Liste von Tupeln\n", + "woerter = [\"Apfel\", \"Banane\", \"Kirsche\"]\n", + "tupel = [(wort, len(wort)) for wort in woerter]\n", + "print(tupel) # Ausgabe: [('Apfel', 5), ('Banane', 6), ('Kirsche', 6)]" + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -95,8 +159,22 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" }, "orig_nbformat": 4 }, diff --git a/docs/025Sets.ipynb b/docs/025Sets.ipynb index 1202634..a50e0fc 100644 --- a/docs/025Sets.ipynb +++ b/docs/025Sets.ipynb @@ -63,25 +63,20 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'apple', 'grape', 'orange'}\n" - ] - }, - { - "ename": "KeyError", - "evalue": "'banana'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[11], line 6\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39mprint\u001b[39m(fruits) \u001b[39m# Output: {'apple', 'banana', 'orange', 'grape'}\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39m# Removing an element from a set\u001b[39;00m\n\u001b[1;32m----> 6\u001b[0m fruits\u001b[39m.\u001b[39;49mremove(\u001b[39m\"\u001b[39;49m\u001b[39mbanana\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n\u001b[0;32m 7\u001b[0m \u001b[39mprint\u001b[39m(fruits) \u001b[39m# Output: {'apple', 'orange', 'grape'}\u001b[39;00m\n\u001b[0;32m 9\u001b[0m \u001b[39m# Checking if an element is in a set\u001b[39;00m\n", - "\u001b[1;31mKeyError\u001b[0m: 'banana'" + "{'apple', 'banana', 'grape', 'orange'}\n", + "{'apple', 'grape', 'orange'}\n", + "True\n", + "3\n", + "apple\n", + "grape\n", + "orange\n" ] } ], From 79d03bfc2a39764eb336563e2b4dc4b8a4de2714 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 12:56:23 +0100 Subject: [PATCH 08/70] bra --- ...erstory.ipynb => 030Basic_Operstors.ipynb} | 0 ....ipynb => 040Conditions_and_if_else.ipynb} | 38 ++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) rename docs/{030Basic_Operstory.ipynb => 030Basic_Operstors.ipynb} (100%) rename docs/{040Conditions.ipynb => 040Conditions_and_if_else.ipynb} (57%) diff --git a/docs/030Basic_Operstory.ipynb b/docs/030Basic_Operstors.ipynb similarity index 100% rename from docs/030Basic_Operstory.ipynb rename to docs/030Basic_Operstors.ipynb diff --git a/docs/040Conditions.ipynb b/docs/040Conditions_and_if_else.ipynb similarity index 57% rename from docs/040Conditions.ipynb rename to docs/040Conditions_and_if_else.ipynb index ade02d2..83263ee 100644 --- a/docs/040Conditions.ipynb +++ b/docs/040Conditions_and_if_else.ipynb @@ -12,7 +12,7 @@ "or Funktioniert analog dem || Operator aus Java\n", "in Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False\n", "is Im Gegensatz zum „==“ vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", - "not Negiert einen bool'schen Ausdruck\n", + "not negiert einen bool'schen Ausdruck\n", "\n", "Im Folenden Beispiele werden alle print statements ausgeführt, weil alle if-Bedinungen zu True evaluieren:" ] @@ -44,6 +44,42 @@ "if not b:\n", " print(\"b is false.\")" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Anweisungen if, else und elseif gibt es auch in Python. Allerdings sind die Keywords leicht abgeändert. In Python heissen sie **if**, **elif** und **else**.\n", + "Hier ist ein kleines Beispiel, wie if, elif und else Anweisungen verwendet werde können:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "age = 25\n", + "\n", + "if age < 18:\n", + " print(\"Du bist minderjährig.\")\n", + "elif age >= 18 and age < 65:\n", + " print(\"Du bist erwachsen.\")\n", + "else:\n", + " print(\"Du bist im Rentenalter.\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Einen kleinen Hinweis noch an dieser Stelle: \n", + "\n", + "Das Schlüsselwort pass in Python wird verwendet, um einen leeren Block zu erstellen, der später mit Code gefüllt werden kann. Es ist nützlich, wenn eine Funktion oder eine Schleife syntaktisch korrekt sein muss, aber noch keinen Code benötigt." + ] } ], "metadata": { From 19afae964eeb140e258297894c540a72c15c0408 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 13:21:39 +0100 Subject: [PATCH 09/70] bra --- docs/040Conditions_and_if_else.ipynb | 73 ++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 9 deletions(-) diff --git a/docs/040Conditions_and_if_else.ipynb b/docs/040Conditions_and_if_else.ipynb index 83263ee..4a6e38c 100644 --- a/docs/040Conditions_and_if_else.ipynb +++ b/docs/040Conditions_and_if_else.ipynb @@ -5,14 +5,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In Python gibt es natürlich auch bool'sche ausdrücke. Die meisten Operanden wie ==, <=, <, >, >=, != sollten bekannt sein und funktionieren gleich wie in Java.\n", + "In Python gibt es natürlich auch bool'sche ausdrücke. Die meisten Operanden wie:\n", + "* `==`\n", + "* `<=`\n", + "* `<`\n", + "* `>`\n", + "* `>=`\n", + "* `!=` \n", + "\n", + "sollten bekannt sein und funktionieren gleich wie in Java.\n", "Zusätzlich gibt es folgende Operatoren:\n", "\n", - "and Funktioniert analog dem && Operator aus Java\n", - "or Funktioniert analog dem || Operator aus Java\n", - "in Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False\n", - "is Im Gegensatz zum „==“ vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", - "not negiert einen bool'schen Ausdruck\n", + "* `and` \\t Funktioniert analog dem **&&** Operator aus Java\n", + "* `or` Funktioniert analog dem **||** Operator aus Java\n", + "* `in` Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False\n", + "* `is` Im Gegensatz zum `==` vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", + "* `not` negiert einen bool'schen Ausdruck\n", "\n", "Im Folenden Beispiele werden alle print statements ausgeführt, weil alle if-Bedinungen zu True evaluieren:" ] @@ -50,7 +58,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Anweisungen if, else und elseif gibt es auch in Python. Allerdings sind die Keywords leicht abgeändert. In Python heissen sie **if**, **elif** und **else**.\n", + "Die Anweisungen `if`, `else` und `else if` gibt es auch in Python. Allerdings sind die Keywords leicht abgeändert. \n", + "In Python heissen sie `if`, `elif` und `else`.\n", "Hier ist ein kleines Beispiel, wie if, elif und else Anweisungen verwendet werde können:" ] }, @@ -70,15 +79,61 @@ " print(\"Du bist im Rentenalter.\")" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Einen kleinen Hinweis noch an dieser Stelle: \n", + "\n", + "Das Schlüsselwort `pass` in Python wird verwendet, um einen leeren Block zu erstellen, der später mit Code gefüllt werden kann. Es ist nützlich, wenn eine Funktion oder eine Schleife syntaktisch korrekt sein muss, aber noch keinen Code benötigt. Ein Beispiel für die Verwendung von `pass` ist innerhalb einer if-Anweisung, wenn man noch nicht sicher ist, welcher Code ausgeführt werden soll, aber das Programm syntaktisch korrekt sein muss:" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "Einen kleinen Hinweis noch an dieser Stelle: \n", + "x = 5\n", + "\n", + "if x < 0:\n", + " print(\"x ist negativ.\")\n", + "elif x == 0:\n", + " pass\n", + "else:\n", + " print(\"x ist positiv.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel wird geprüft, ob x negativ, null oder positiv ist. Wenn x null ist, wird der pass-Block ausgeführt, der hier leer ist (es passiert also nichts). Wenn x negativ oder positiv ist, wird eine entsprechende Ausgabe erstellt.\n", + "\n", + "Ein weiteres Beispiel für die Verwendung von pass ist, wenn man eine Funktion oder Klasse definiert, aber noch nicht weis, welchen Code Sie darin später befinden wird:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def empty_function():\n", + " pass\n", "\n", - "Das Schlüsselwort pass in Python wird verwendet, um einen leeren Block zu erstellen, der später mit Code gefüllt werden kann. Es ist nützlich, wenn eine Funktion oder eine Schleife syntaktisch korrekt sein muss, aber noch keinen Code benötigt." + "class EmptyClass:\n", + " pass" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Theorie zu Klassen und Funktionen wirst du später kennenlernen." ] } ], From fe050da33b5bbb7504ffb973579eb93522ae48d4 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 14:02:27 +0100 Subject: [PATCH 10/70] added code tags in markdown --- docs/000Hello.ipynb | 26 +++++++++++++++++--------- docs/010Variablen.ipynb | 12 ++++++------ docs/015Strings.ipynb | 8 ++++---- docs/020Lists.ipynb | 4 ++-- docs/025Sets.ipynb | 2 +- docs/030Basic_Operstors.ipynb | 6 +++--- docs/040Conditions_and_if_else.ipynb | 2 +- docs/050Loops.ipynb | 4 ++-- docs/060Functions.ipynb | 4 ++-- 9 files changed, 38 insertions(+), 30 deletions(-) diff --git a/docs/000Hello.ipynb b/docs/000Hello.ipynb index 6b8eb40..be4f336 100644 --- a/docs/000Hello.ipynb +++ b/docs/000Hello.ipynb @@ -5,15 +5,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Python Ausbildungsproramm\n", "Willkommen zum Python Ausbildungsproramm.\n", "Java solltest du bereits kennen. Begriffe wie Variable, Array, Methode sind dir keine Fremdwörter.\n", "\n", "Python ist einer der beliebtesten Programmiersprachen. Sie wurde 1991 von Guido van Rossum, einem niederländischen Softwareentwickler erschaffen.\n", "Python wird oft in folgenden Bereichen angewendet:\n", - " Web development (server seitig)\n", - " Software entwicklung\n", - " mathematische Anwendungen\n", - " Systemskripting\n", + "\n", + "* Web development (server seitig)\n", + "* Software entwicklung\n", + "* mathematische Anwendungen\n", + "* Systemskripting\n", "\n", "Eine Einzigartigkeit von Python ist die Leserlickeit. Python liest sich fast wie die englische Sprache, das wirst im Verlauf der Einführung noch merken.\n", "\n", @@ -34,14 +36,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ziemlich simpel, oder? Die Methode print() nimmt einen String und gibt ihn in der Kommandozeile aus.\n", - "Jede print() Anweisung schreibt dabei auf eine neue Zeile. Beachte, das in Python keine Semikolons benutzt werden.\n", + "Ziemlich simpel, oder? Die Methode `print()` nimmt einen String und gibt ihn in der Kommandozeile aus.\n", + "Jede `print()` Anweisung schreibt dabei auf eine neue Zeile. Beachte, das in Python keine Semikolons benutzt werden.\n", "Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon.\n", - "Kommentare werden mit einem # Zeichen eingeleitet.\n", + "Kommentare werden mit einem `#` Zeichen eingeleitet.\n", "Eine main Methode wie in vielen anderen Programmiersprachen braucht es nicht.\n", "\n", "Ein sehr wichtiger Punkt, welcher Python von praktisch allen anderen Programmiersprachen unterscheidet ist, \n", - "dass Code-Blöcke nicht durch geschweifte Klammern (also \"{\" und \"}\") abgetrennt werden, sondern durch Einrückungen.\n", + "dass Code-Blöcke nicht durch geschweifte Klammern `{}` abgetrennt werden, sondern durch Einrückungen.\n", "\n", "Hier ein kleines Beispiel:" ] @@ -64,8 +66,14 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "name": "python", + "version": "3.9.13" }, "orig_nbformat": 4 }, diff --git a/docs/010Variablen.ipynb b/docs/010Variablen.ipynb index ed1662f..d63a2f9 100644 --- a/docs/010Variablen.ipynb +++ b/docs/010Variablen.ipynb @@ -9,11 +9,11 @@ "Es benötigt weder die Verwendung eines Keywords (wie z.B. new), Noch die Angabe eines Datentypen.\n", "Dies ist nämlich nicht erforderlich, da alle variablen als Objekte angesehen werden. Python bestimmt im Hintergrund, um welchen Datentyp es sich hierbei handelt. \n", "\n", - "Das Einfachste Beispiel lautet ganz einfach x = 5\n", + "Das Einfachste Beispiel lautet ganz einfach `x = 5`.\n", "\n", - "In Python ist es üblich ein sogenanntes Snake Case naming zu wählen, nicht wie in Java Camel oder Pascal Case.\n", + "In Python ist es üblich ein sogenanntes **Snake Case** naming zu wählen, nicht wie in Java Camel oder Pascal Case.\n", "Dabei werden Wörter einfach mit einem Unterstrich (also \"_\") getrennt. \n", - "Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben.\n", + "Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben. Konnstanten werden mit **UPPERCASE** style benannt.\n", "\n", "Einige Beispiele für die Initialisierung und Operationen mit Variablen: " ] @@ -24,13 +24,13 @@ "metadata": {}, "outputs": [], "source": [ - "my_int = 7\n", - "print(my_int) # Output: 7\n", + "MY_INT_CONSTANT = 7\n", + "print(MY_INT_CONSTANT) # Output: 7\n", "\n", "my_float = 7.0\n", "print(my_float) # Output: 7.0\n", "\n", - "my_float = float(my_int) # Typ-casting von int zu float\n", + "my_float = float(MY_INT_CONSTANT) # Typ-casting von int zu float\n", "print(my_float) # Output: 7.0\n", "\n", "my_string1 = 'Hello' # Initialisierung eines Strings mit '\n", diff --git a/docs/015Strings.ipynb b/docs/015Strings.ipynb index 16dae17..f74d7d3 100644 --- a/docs/015Strings.ipynb +++ b/docs/015Strings.ipynb @@ -7,7 +7,7 @@ "source": [ "Strings können in Python mit einfachen oder doppelten Anführungszeichen initialisiert werden.\n", "Ebenfalls ist es möglich, Strings über mehrere Zeilen mit dreifach doppelten oder dreifach einfachen Anführungszeichen zu initialisieren.\n", - "Hierbei werden die Leer- und Enterzeichen mitgespeichert. Ein String über 3 Zeilen wird bei einem print() Aufruf auch über 3 Zeilen in der Konsole ausgegeben.\n", + "Hierbei werden die Leer- und Enterzeichen mitgespeichert. Ein String über 3 Zeilen wird bei einem `print()` Aufruf auch über 3 Zeilen in der Konsole ausgegeben.\n", "Im nachfolgenden Code findest du ein paar Beispiele:" ] }, @@ -40,7 +40,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Strings sind wie Arrays! Man kann auf die Elemente (Character; Buchstaben) mit dem [] Operator zugreifen.\n", + "Strings sind wie Arrays! Man kann auf die Elemente (Character; Buchstaben) mit dem `[]` Operator zugreifen.\n", "Ebenfalls kann man mit Loops über Strings iterieren oder die die Länge des Strings ausgeben lassen.\n", "Welche Loops es gibt und wie man sie implementiert wird in einem späteren Kappitel behandelt.\n", "Einige Operationen mit Strings sind im nachfolgenden Code zu finden:" @@ -69,7 +69,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Eine weitere coole Operation auf Strings ist das sogenannte \"Slicin\". \n", + "Eine weitere coole Operation auf Strings ist das sogenannte **Slicing**. \n", "Wie der Name schon suggeriert, kann man Strings in verschiedene Teile zerlegen. Dabei nehmen wir aber nicht einzelne Buchstaben wie vorher,\n", "sondern ganze Teile. Einige slicing Operationen sind:" ] @@ -144,7 +144,7 @@ "source": [ "Escape Character\n", "\n", - "Um Zeichen in einem String hinzufügen zu können, welche normalerweise nicht erlaubt sind, kann ein \\ verwendet werden.\n", + "Um Zeichen in einem String hinzufügen zu können, welche normalerweise nicht erlaubt sind, kann ein `\\` verwendet werden.\n", "Es gibt auch weitere spezielle Zeichen, welche mit Hilfe eines Backslashes in einen String eingefügt werden können." ] }, diff --git a/docs/020Lists.ipynb b/docs/020Lists.ipynb index a270b24..42b95d9 100644 --- a/docs/020Lists.ipynb +++ b/docs/020Lists.ipynb @@ -38,7 +38,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In diesem Beispiel sieht man, dass das Printen einer Liste einfach mit print(list) machbar ist. Es braucht hierfür keine toString Methode wie z.B. in Java.\n", + "In diesem Beispiel sieht man, dass das Printen einer Liste einfach mit `print(list)` machbar ist. Es braucht hierfür keine toString Methode wie z.B. in Java.\n", "Hilfreiche Operationen bezüglich Listen sind die folgenden:" ] }, @@ -98,7 +98,7 @@ "\n", "Die Listen-Komprehension erzeugt dann eine neue Liste, indem der expression auf jeden Wert von variable in iterable angewendet wird.\n", "\n", - "Zum Beispiel generiert die Listen-Komprehension [i * 2 for i in range(5)] die Liste [0, 2, 4, 6, 8], indem sie den Ausdruck i * 2 auf jeden Wert von i im Bereich von 0 bis 4 anwendet.\n", + "Zum Beispiel generiert die Listen-Komprehension `[i * 2 for i in range(5)]` die Liste `[0, 2, 4, 6, 8]`, indem sie den Ausdruck `i * 2` auf jeden Wert von `i` im Bereich von 0 bis 4 anwendet.\n", "\n", "Hier sind noch ein paar weitere Beispiele von Listen-Komprehensionen:" ] diff --git a/docs/025Sets.ipynb b/docs/025Sets.ipynb index a50e0fc..9231433 100644 --- a/docs/025Sets.ipynb +++ b/docs/025Sets.ipynb @@ -8,7 +8,7 @@ "Python-Sets sind eine unglaublich nützliche Datenstruktur, mit der man ungeordnete, eindeutige Elemente speichern kann. Sie ähneln Listen und Tupeln, aber Sets können keine doppelten Werte enthalten. In dieser Einführung werden wir die Grundlagen zum Erstellen und Verwenden von Sets sowie einige gängige Set-Operationen behandeln.\n", "\n", "# Ein Set erstellen\n", - "Es gibt zwei Möglichkeiten, ein Set in Python zu erstellen: Mit der Funktion **set()** oder mit geschweiften Klammern **{}**." + "Es gibt zwei Möglichkeiten, ein Set in Python zu erstellen: Mit der Funktion `set()` oder mit geschweiften Klammern `{}`." ] }, { diff --git a/docs/030Basic_Operstors.ipynb b/docs/030Basic_Operstors.ipynb index 20aa63b..3fd0fe0 100644 --- a/docs/030Basic_Operstors.ipynb +++ b/docs/030Basic_Operstors.ipynb @@ -6,8 +6,8 @@ "metadata": {}, "source": [ "In diesem Abschnitt thematisieren wir grundlegende Operanden in Python.\n", - "Die +, -, *, / und % (modulo) Operanden auf Zahlen verhalten sich wie in Java. Es gilt ebenfalls Punkt vor Strich etc.\n", - "Es gibt zusätzlich den ** Operanden, welcher für das Potenzieren benutzt werden kann:" + "Die `+`, `-`, `*`, `/` und `%` (modulo) Operanden auf Zahlen verhalten sich wie in Java. Es gilt ebenfalls Punkt vor Strich etc.\n", + "Es gibt zusätzlich den `**` Operanden, welcher für das Potenzieren benutzt werden kann:" ] }, { @@ -67,7 +67,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mit dem + Operator können Listen vereinigt werden. Hierbei werden alle Elemente der zweiten Liste am Ende der ersten Liste hinzugefügt." + "Mit dem `+` Operator können Listen vereinigt werden. Hierbei werden alle Elemente der zweiten Liste am Ende der ersten Liste hinzugefügt." ] }, { diff --git a/docs/040Conditions_and_if_else.ipynb b/docs/040Conditions_and_if_else.ipynb index 4a6e38c..7d05cde 100644 --- a/docs/040Conditions_and_if_else.ipynb +++ b/docs/040Conditions_and_if_else.ipynb @@ -16,7 +16,7 @@ "sollten bekannt sein und funktionieren gleich wie in Java.\n", "Zusätzlich gibt es folgende Operatoren:\n", "\n", - "* `and` \\t Funktioniert analog dem **&&** Operator aus Java\n", + "* `and` Funktioniert analog dem **&&** Operator aus Java\n", "* `or` Funktioniert analog dem **||** Operator aus Java\n", "* `in` Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False\n", "* `is` Im Gegensatz zum `==` vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", diff --git a/docs/050Loops.ipynb b/docs/050Loops.ipynb index 5d81431..afa74f8 100644 --- a/docs/050Loops.ipynb +++ b/docs/050Loops.ipynb @@ -8,7 +8,7 @@ "For-Loop\n", "\n", "Es gibt mehrere Möglichkeiten, einen For-Loop in Python zu implementieren. \n", - "Eine Möglichkeit ist die Benutzung der range() methode, welche wiederum selbst verschieden eingesetzt werden kann. \n", + "Eine Möglichkeit ist die Benutzung der `range()` methode, welche wiederum selbst verschieden eingesetzt werden kann. \n", "Eine andere Möglichkeit ist einfach über alle Elemente einer Liste (oder auch eines Sets, Dictionarys, ...) zu iterieren.\n", "Beachte den Doppelpunkt und die Einrückung des Bodys.\n", "Das Nachfolgende Beispiel zeigt einige for loops." @@ -73,7 +73,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Statements \"break\" and \"continue\" sollten bekannt sein und funktionieren ebenfalls wie in Java:" + "Die Statements `break` and `continue` sollten bekannt sein und funktionieren ebenfalls wie in Java:" ] }, { diff --git a/docs/060Functions.ipynb b/docs/060Functions.ipynb index 4e60f73..2d3c40d 100644 --- a/docs/060Functions.ipynb +++ b/docs/060Functions.ipynb @@ -7,7 +7,7 @@ "source": [ "Kommen wir zum Thema Funktionen.\n", "Eine Funktion in Python ist das, was wir in Java eine Methode nennen. Das Gundprinzip sollte klar sein.\n", - "Funktionen werden immer mit dem keyword \"def\" definiert. Bei einer Funktion des Typs void (ohne Rückgabewert) braucht es kein zusätzliches Keyword.\n", + "Funktionen werden immer mit dem keyword `def` definiert. Bei einer Funktion des Typs void (ohne Rückgabewert) braucht es kein zusätzliches Keyword.\n", "Eine Funktion ist in Python folgendermassen aufgebaut:" ] }, @@ -81,7 +81,7 @@ "metadata": {}, "source": [ "Dies ist aber nur eine Information und hat keinen Einfluss auf das Programm oder den Compiler!\n", - "Der Funktionaufruf sum(1, \"green\") würde ausgeführt und das Programm einen Fehler werfen!\n", + "Der Funktionaufruf `sum(1, \"green\")` würde ausgeführt und das Programm einen Fehler werfen!\n", "Daher ist es von Vorteil, Docstrings sowie Paremeter und Rückgabetypen anzugeben, um während dem Code Schreiben mögliche Fehler besser zu erkennen.\n", "Durch hovern über die Methode sind diese Informationen ersichtlich.\n", "\n", From 94c563de15cbdd3dc5d1f1e821555ea11e288d79 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 14:18:42 +0100 Subject: [PATCH 11/70] initial commit for this theory --- docs/075Imports.ipynb | 87 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 docs/075Imports.ipynb diff --git a/docs/075Imports.ipynb b/docs/075Imports.ipynb new file mode 100644 index 0000000..1a30c06 --- /dev/null +++ b/docs/075Imports.ipynb @@ -0,0 +1,87 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie in Java können auch in Python externe Libraries, sowie auch eingene Files (Klassen und Methoden) in ein Skript eingebunden werden.\n", + "Dies ermöglicht eine Wiederverwendbarkeit und kann helfen, den Code, durch Auslagern von Elementen sauber zu halten.\n", + "Nachfolgend eineige Beispiele:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Importieren von Standardmodulen wie \"random\" oder \"os\"\n", + "import random\n", + "import os\n", + "\n", + "# Aufruf von Funktionen aus den importierten Modulen\n", + "rand_num = random.randint(0, 10)\n", + "cwd = os.getcwd()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel haben wir zwei Standardmodule `random` und `os` importiert und können nun Funktionen aus diesen Modulen in unserem Skript aufrufen. In diesem Fall haben wir die Funktion `randint` aus dem Modul `random` verwendet, um eine zufällige Ganzzahl zu generieren, und die Funktion `getcwd` aus dem Modul `os`, um den aktuellen Arbeitsverzeichnis zu erhalten." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Importieren von selbst erstellten Modulen wie \"my_module.py\"\n", + "import my_module\n", + "\n", + "# Aufruf von Funktionen aus dem importierten Modul\n", + "result = my_module.add(2, 3)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel haben wir ein benutzerdefiniertes Modul `my_module.py` erstellt, das eine Funktion `add` enthält, die die Summe zweier Zahlen berechnet. Wir haben dann dieses Modul in unserem Skript importiert und können nun die Funktion `add` aus diesem Modul aufrufen." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Importieren einer spezifischen Funktion aus einem selbst erstellten Modul\n", + "from my_module import multiply\n", + "\n", + "# Aufruf der importierten Funktion\n", + "result = multiply(2, 3)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel haben wir eine spezifische Funktion `multiply` aus unserem benutzerdefinierten Modul `my_module.py` importiert und können nun diese Funktion direkt in unserem Skript aufrufen, ohne den Namen des Moduls vor der Funktion zu verwenden." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 8cc39864f9004775a8cf01fdceb27036dea86e00 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 14:19:15 +0100 Subject: [PATCH 12/70] bra --- docs/000Hello.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/000Hello.py b/docs/000Hello.py index 8d74c41..5e7f985 100644 --- a/docs/000Hello.py +++ b/docs/000Hello.py @@ -1,9 +1,7 @@ # https://www.learnpython.org/en/String_Formatting # https://www.learnpython.org/en/Basic_String_Operations -# if, elif, else # generators # input -# imports # tuple https://www.w3schools.com/python/python_tuples.asp From b7780fa7e8a9dc0d4c378cda5307fac2be5656e5 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 14:50:35 +0100 Subject: [PATCH 13/70] changed hello.py into TODO.txt --- docs/{000Hello.py => TODO.txt} | 1 + 1 file changed, 1 insertion(+) rename docs/{000Hello.py => TODO.txt} (97%) diff --git a/docs/000Hello.py b/docs/TODO.txt similarity index 97% rename from docs/000Hello.py rename to docs/TODO.txt index 5e7f985..01a2c5f 100644 --- a/docs/000Hello.py +++ b/docs/TODO.txt @@ -2,6 +2,7 @@ # https://www.learnpython.org/en/Basic_String_Operations # generators # input +# regex # tuple https://www.w3schools.com/python/python_tuples.asp From 4e25950c294b181fd18fff20964efa087b78d89e Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 15:10:59 +0100 Subject: [PATCH 14/70] =?UTF-8?q?Tupel=20Theorie=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/027Tuples.ipynb | 138 +++++++++++++++++++++++++++++++++++++++++++ docs/TODO.txt | 1 - 2 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 docs/027Tuples.ipynb diff --git a/docs/027Tuples.ipynb b/docs/027Tuples.ipynb new file mode 100644 index 0000000..4908abd --- /dev/null +++ b/docs/027Tuples.ipynb @@ -0,0 +1,138 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ein Tupel ist ein Datencontainer in Python, der dazu verwendet wird, eine Sammlung von Werten zu speichern. Ein Tupel kann mehrere Werte enthalten, die nicht geändert werden können. Das bedeutet, dass man den Inhalt des Tupels nicht nach der Erstellung ändern kann.\n", + "\n", + "Man kann ein Tupel in Python mit runden Klammern erstellen. Hier sind einige Beispiele für Tupel:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "my_tuple = (1, 2)\n", + "my_tuple2 = (1, 1, 2) # Dublikate sind erlaubt\n", + "my_tuple2 = (\"Python\", 3.9, True) # Ein Tupel kann verschiedene Datentypen beinhalten\n", + "my_tuple3 = ((1, 2), \"hello\") # Verschachtelung von Tupeln\n", + "empty_tuple = () # Leeres Tupel\n", + "my_tuple4 = (\"hallo\",) # Tupel mit nur einem Element\n", + "my_tuple5 = (\"hallo\") # KEIN Tupel! Dies ist ein String!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Man kann auf die Werte in einem Tupel zugreifen, indem man den Index des Werts in eckigen Klammern nach dem Namen des Tupels verwenden. Beachte, dass der Index bei 0 beginnt. Hier ist ein Beispiel für den Zugriff auf den ersten Wert in einem Tupel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_tuple = (1, 2, 3)\n", + "print(my_tuple[0])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dies gibt den Wert 1 aus, da der erste Wert in einem Tupel den Index 0 hat.\n", + "\n", + "Da Tupel unveränderlich sind, kann man keine Werte hinzufügen, entfernen oder ändern. Wenn man jedoch ein neues Tupel mit geänderten Werten erstellen möchte, kann man dies tun, indem man die vorhandenen Werte aus dem Tupel kopiert und ändert. Hier ist ein Beispiel für die Erstellung eines neuen Tupels mit geänderten Werten:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 2, 4)\n" + ] + } + ], + "source": [ + "my_tuple = (1, 2, 3)\n", + "new_tuple = my_tuple[:2] + (4,) # Erstellt ein neues Tupel mit den ersten beiden Werten von my_tuple und dem Wert 4.\n", + "print(new_tuple)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dies gibt das Tupel (1, 2, 4) aus.\n", + "\n", + "Natürlich können auch Funktionen Tupel als Argumente nehmen oder zurückgeben. Ebenfalls kann man mit for-schleifen über Tupel iterieren. Es gibt ausserdem einige von Python zur Verfügung gestellte Funktionen auf Tupeln wie zum Beispiel `len()`, welche die Länge eines Tupels zurückgibt. Einige weitere Code Beispiele sind:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Verwendung von Tupeln als Dict Keys\n", + "my_dict = {(\"Alice\", 25): \"alice@example.com\", (\"Bob\", 30): \"bob@example.com\"}\n", + "print(my_dict[(\"Alice\", 25)]) # Gibt die E-Mail-Adresse von Alice aus (\"alice@example.com\")\n", + "\n", + "# Funktion, welche ein Tupel zurückgibt\n", + "def get_name_and_age():\n", + " name = \"Alice\"\n", + " age = 25\n", + " return name, age\n", + "\n", + "result = get_name_and_age()\n", + "print(result[0]) # Gibt den Namen aus (\"Alice\")\n", + "print(result[1]) # Gibt das Alter aus (25)\n", + "\n", + "# For schleife über ein Tupel\n", + "my_tuple = (1, 2, 3, 4)\n", + "for item in my_tuple:\n", + " print(item)\n", + "\n", + "# Verwendung der len() Funktion.\n", + "my_tuple = (1, 2, 3, 4)\n", + "print(len(my_tuple)) # Gibt 4 aus" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/TODO.txt b/docs/TODO.txt index 01a2c5f..392426f 100644 --- a/docs/TODO.txt +++ b/docs/TODO.txt @@ -3,7 +3,6 @@ # generators # input # regex -# tuple https://www.w3schools.com/python/python_tuples.asp # https://www.w3schools.com/python/python_variables_output.asp From 6583100a926af42798fe88289172a5cf3fc3d093 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 15:23:05 +0100 Subject: [PATCH 15/70] added input_output theory --- docs/013Input_Output.ipynb | 77 ++++++++++++++++++++++++++++++++++++++ docs/TODO.txt | 1 - 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 docs/013Input_Output.ipynb diff --git a/docs/013Input_Output.ipynb b/docs/013Input_Output.ipynb new file mode 100644 index 0000000..4d17d11 --- /dev/null +++ b/docs/013Input_Output.ipynb @@ -0,0 +1,77 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Eingabe in Python\n", + "Die einfachste Möglichkeit, in Python Eingaben zu erhalten, besteht darin, die `input()` Funktion zu verwenden. Diese Funktion wird verwendet, um Benutzereingaben von der Konsole zu lesen. Die `input()` Funktion liest die Eingabe als Zeichenkette (String), und man kann sie dann in den gewünschten Datentyp konvertieren.\n", + "\n", + "Hier ist ein Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "name = input(\"Geben Sie Ihren Namen ein: \")\n", + "print(\"Hallo, \" + name + \". Willkommen in Python!\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dieses Programm fordert den Benutzer auf, seinen Namen einzugeben, liest die Eingabe als Zeichenkette und gibt dann eine personalisierte Nachricht aus. Beachte, dass die Eingabe innerhalb der `input()` Funktion in Klammern eingegeben wird.\n", + "\n", + "# Ausgabe in Python\n", + "Die einfachste Möglichkeit, in Python Ausgaben zu erstellen, besteht darin, die print()-Funktion zu verwenden. Diese Funktion druckt eine Zeichenkette oder eine Variable auf der Konsole." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "name = \"Max\"\n", + "age = 20\n", + "print(\"Mein Name ist\", name, \"und ich bin\", age, \"Jahre alt.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dieses Programm erstellt eine personalisierte Nachricht, indem es den Namen und das Alter des Benutzers verwendet und diese auf der Konsole ausgibt. Beachte, dass wir hier mehrere Argumente an die `print()` Funktion übergeben haben. Diese werden durch ein Komma getrennt und die Funktion fügt automatisch Leerzeichen zwischen den Argumenten hinzu." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/TODO.txt b/docs/TODO.txt index 392426f..4a58943 100644 --- a/docs/TODO.txt +++ b/docs/TODO.txt @@ -1,7 +1,6 @@ # https://www.learnpython.org/en/String_Formatting # https://www.learnpython.org/en/Basic_String_Operations # generators -# input # regex From bdcf013493c87cd50ed428f6c6df4e773469d57b Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 15:23:49 +0100 Subject: [PATCH 16/70] bra --- docs/TODO.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/TODO.txt b/docs/TODO.txt index 4a58943..6cd186d 100644 --- a/docs/TODO.txt +++ b/docs/TODO.txt @@ -2,9 +2,3 @@ # https://www.learnpython.org/en/Basic_String_Operations # generators # regex - - -# https://www.w3schools.com/python/python_variables_output.asp - - -# https://www.youtube.com/watch?v=dXkWy58MV2Y From 8d2e5f3bc117a4b1dbca094e186d1a191062fd85 Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Wed, 22 Mar 2023 15:24:13 +0100 Subject: [PATCH 17/70] bra --- docs/013Input_Output.py | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/013Input_Output.py diff --git a/docs/013Input_Output.py b/docs/013Input_Output.py deleted file mode 100644 index 81272ff..0000000 --- a/docs/013Input_Output.py +++ /dev/null @@ -1 +0,0 @@ -# https://www.w3schools.com/python/python_variables_output.asp From 9d67216720d3ccddf72ea04881e2826bec167717 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Thu, 23 Mar 2023 17:10:25 +0100 Subject: [PATCH 18/70] doc for Jupyter --- .vscode/extensions.json | 11 +++ docs/000Hello.ipynb | 166 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 168 insertions(+), 9 deletions(-) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..304e4a9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,11 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. + // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp + // List of extensions which should be recommended for users of this workspace. + "recommendations": [ + "ms-toolsai.jupyter", + "ms-python.python" + ], + // List of extensions recommended by VS Code that should not be recommended for users of this workspace. + "unwantedRecommendations": [] +} \ No newline at end of file diff --git a/docs/000Hello.ipynb b/docs/000Hello.ipynb index be4f336..98c7fc6 100644 --- a/docs/000Hello.ipynb +++ b/docs/000Hello.ipynb @@ -7,19 +7,122 @@ "source": [ "# Python Ausbildungsproramm\n", "Willkommen zum Python Ausbildungsproramm.\n", - "Java solltest du bereits kennen. Begriffe wie Variable, Array, Methode sind dir keine Fremdwörter.\n", "\n", "Python ist einer der beliebtesten Programmiersprachen. Sie wurde 1991 von Guido van Rossum, einem niederländischen Softwareentwickler erschaffen.\n", "Python wird oft in folgenden Bereichen angewendet:\n", "\n", "* Web development (server seitig)\n", - "* Software entwicklung\n", + "* Softwareentwicklung\n", "* mathematische Anwendungen\n", "* Systemskripting\n", "\n", - "Eine Einzigartigkeit von Python ist die Leserlickeit. Python liest sich fast wie die englische Sprache, das wirst im Verlauf der Einführung noch merken.\n", + "Eine Einzigartigkeit von Python ist die Lesbarkeit. Python liest sich fast wie die englische Sprache, das wirst im Verlauf der Einführung noch merken. Ausserdem war Python so konzipiert, dass die Zeit, die für die Entwicklung benötigt wird, möglichst kurz gehalten wird. Daher war auch das Ziel, dass Python eine leicht verständliche Programmiersprache wird.\n", "\n", - "Wir starten nun direkt mit dem Klassiker, dem Hello World Programm." + "Ausserdem ist Python eine \"Open Source\"-Programmiersprache, den Source-Code von Python könntest du z.B. hier nachschauen gehen, wenn es dich interessieren sollte: https://www.python.org/downloads/source/" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jupyter-Notebook\n", + "\n", + "Dieses Dokument hier ist ein Jupiter-Notebook. Das erkennst du an der Dateiendung \".ipynb\", was so viel bedeutet wie \"integrated Python Notebook\".\n", + "\n", + "Das coole an solchen Jupyter-Notebooks ist, dass du formatierten Text (im Markdown-Format) mit Python-Code kombinieren kannst, und Python-Code durch Klick auf den Play-Button direkt ausführen und debuggen kannst.\n", + "\n", + "Jupyter-Notebooks bestehen grundsätzlich aus diesen beiden Komponenten:\n", + "1. Markup Cells (Markup-Blöcke)\n", + "und\n", + "2. Code Cells (Code-Blöcke)\n", + "\n", + "Du kannst von beiden kreuz und quer in einem Jupyter-Notebook hinzufügen.\n", + "\n", + "Neue Blöcke kannst du zwischen, vor und nach jedem Block hinzufügen via einen Klick auf \"+ Code\" bzw. \"+ Markdown\"." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Code-Block\n", + "Nachfolgend siehst du einen Code-Block mit Python-Code drin.\n", + "\n", + "Damit du den Code ausführen kannst, benötigst du mindestens folgendes in VS Code:\n", + "* Eine aktive Python-Installation. Python kannst du von einer der beiden Quellen herunterladen:\n", + " * https://www.microsoft.com/store/productId/9NRWMJP3717K oder hier herunterladen.\n", + " * https://www.python.org/downloads/\n", + "* Die Jupyter-Extension für VS Code. In VS Code kannst du diese herunterladen, indem du [Ctrl] + [Shift] + [X] klickst, das öffnet das Extensions-Tab auf der Seite, dort suchst du nach \"Jupyter\" und installierst die gleichnamige Extension von Microsoft. Möglicherweise wurdest du bereits gefragt, ob du diese Extension installieren möchtest, da diese in der Datei für vorgeschlagene Extensions (\".vscode/extensions.json\") vorkommt.\n", + "* Die Python-Extension von Microsoft. Diese sollte bereits nach der Installation der Jupyter-Extension installiert worden sein.\n", + "\n", + "Anschliessend solltest du in der Lage sein, Code-Blöcke auszuführen. Möglicherweise fehlt dir noch ein Jupyter-Kernel, das wirst du aber gleich herausfinden. Klicke im Nachfolgenden Code-Block auf den Play-Button und wenn dich VS Code unten rechts fragt, ob es etwas installieren oder erstellen soll, dann bestätige dies.\n", + "\n", + "Wenn du nach einem Python-Environment gefragt wirst, dann wähle diejenige Python-Version aus, die du als letztes installiert hast (also eine aktuelle, die neuer als 3.9 ist).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Hans-Ruedi, nice to see you!\n" + ] + } + ], + "source": [ + "import getpass\n", + "\n", + "username = getpass.getuser()\n", + "print(f\"Hello {username}, nice to see you!\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unterhalb des Code-Block solltest du nun eine Begrüssungs-Nachricht sehen, wo dein Benutzer-Name vorkommt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Markup-Blöcke\n", + "\n", + "Markup-Blöcke bestehen im Prinzip nur aus formatiertem Text.\n", + "\n", + "Die Formatierung wird mit bestimmten Zeichen realisiert. Versuche dies gerade aus:\n", + "* Klicke unterhalb dieses Blockes auf \"+ Markdown\".\n", + "* Gib einen Text ein, z.B. `Hello **World**, nice to see *you*.`.\n", + "* Klicke oben rechts bei der Zelle/beim Block auf das Gut-Zeichen oder klicke [Shift] + [Enter].\n", + "\n", + "Nun sollte dein Text formatiert erscheinen.\n", + "* Mit zwei Sternchen markierst du fetten Text: `**World**`\n", + "* Mit einem Sternchen markierst du kursiven Text: `*you*`\n", + "* Mit `#`, `##`, `###` usw. markierst du überschriften: `# Überschrift 1`\n", + "\n", + "Die Formatierung ist \"Markdown\". In VS Code wird das Markdown für GitHub standardmässig verwendet (unterscheidet sich von demjenigen, das Atlassian z.B. in Jira einsetzt). Eine Übersicht, wie du Text in Markdown formatieren kannst, findest du hier: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Erstes Beispiel\n", + "Wir starten nun direkt mit dem Klassiker, dem Hello World Programm.\n", + "\n", + "Führe folgenden Code aus, indem du auf den Play-Button neben der Code-Zelle klickst (\"Execute Cell\").\n", + "\n", + "(Alternativ kannst du auch einfach in den Programm-Code klicken und [Ctrl]+[Alt]+[Enter] klicken.)" ] }, { @@ -36,11 +139,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ziemlich simpel, oder? Die Methode `print()` nimmt einen String und gibt ihn in der Kommandozeile aus.\n", - "Jede `print()` Anweisung schreibt dabei auf eine neue Zeile. Beachte, das in Python keine Semikolons benutzt werden.\n", + "Ziemlich simpel, oder?\n", + "\n", + "Die Methode `print()` nimmt einen Text (nachfolgend String genannt) und gibt ihn in nachher aus.\n", + "\n", + "Jede `print()` Anweisung schreibt dabei auf eine neue Zeile.\n", + "\n", "Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon.\n", - "Kommentare werden mit einem `#` Zeichen eingeleitet.\n", - "Eine main Methode wie in vielen anderen Programmiersprachen braucht es nicht.\n", + "\n", + "Möchtest du den Code kommentieren, dann kannst du Kommentare mit einem `#`-Zeichen (Hashtag, \"Gartenhag\") einleiten. In den Kommentaren kannst du alles schreiben, was du willst. Diese dienen oft dazu, etwas komplizierteres zu beschreiben, wenn der Code nicht selbsterklärend ist.\n", + "\n", + "Der Code wird dann von Zeile nach Zeile abgearbeitet. Im Gegensatz zu anderen Programmiersprachen wie Java, können die Anweisungen direkt auf oberster Ebene in eine Datei geschrieben werden, ohne dass du diese noch irgendwo reinpacken musst (also keine Methoden/Funktionen/Klassen erforderlich).\n", "\n", "Ein sehr wichtiger Punkt, welcher Python von praktisch allen anderen Programmiersprachen unterscheidet ist, \n", "dass Code-Blöcke nicht durch geschweifte Klammern `{}` abgetrennt werden, sondern durch Einrückungen.\n", @@ -63,6 +172,37 @@ " else:\n", " break" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Java und JavaScript z.B. würde der gleiche Code wie folgt aussehen. Beachte, dass die geschweiften Klammern (`{` und `}`) in Python mit einem Doppelpunkt (`:`) und dessen innerer Block zwingend mit Einrückungen (Tab oder 4 Leerzeichen) realisiert werden." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "javascript" + } + }, + "outputs": [], + "source": [ + "if (true) {\n", + " console.log(\"It's true\");\n", + "}\n", + "\n", + "while (false) {\n", + " if (true) {\n", + " console.log(\"Hi\");\n", + " } else {\n", + " break;\n", + " }\n", + "}" + ] } ], "metadata": { @@ -72,8 +212,16 @@ "name": "python3" }, "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", "name": "python", - "version": "3.9.13" + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" }, "orig_nbformat": 4 }, From bac0432ba5ffb8f3ed41114d9526abb29cef413b Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Thu, 23 Mar 2023 17:11:24 +0100 Subject: [PATCH 19/70] doc Jupyter and Python in same file --- docs/000Hello.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/000Hello.ipynb b/docs/000Hello.ipynb index 98c7fc6..3062f05 100644 --- a/docs/000Hello.ipynb +++ b/docs/000Hello.ipynb @@ -117,7 +117,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Erstes Beispiel\n", + "## Python\n", + "### Erstes Beispiel\n", "Wir starten nun direkt mit dem Klassiker, dem Hello World Programm.\n", "\n", "Führe folgenden Code aus, indem du auf den Play-Button neben der Code-Zelle klickst (\"Execute Cell\").\n", From 22c3cd476cc43751269140c1e0f92bc0b453c61c Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Thu, 23 Mar 2023 18:48:58 +0100 Subject: [PATCH 20/70] primitiv types, and some optimizations --- docs/010Variablen.ipynb | 101 ++---- docs/011_Typen.ipynb | 449 ++++++++++++++++++++++++++ docs/015Strings.ipynb | 86 ++++- docs/020Lists.ipynb | 10 +- docs/022_Listen_Komprehensionen.ipynb | 79 +++++ docs/025Sets.ipynb | 47 ++- docs/027Tuples.ipynb | 2 + 7 files changed, 676 insertions(+), 98 deletions(-) create mode 100644 docs/011_Typen.ipynb create mode 100644 docs/022_Listen_Komprehensionen.ipynb diff --git a/docs/010Variablen.ipynb b/docs/010Variablen.ipynb index d63a2f9..527d4e1 100644 --- a/docs/010Variablen.ipynb +++ b/docs/010Variablen.ipynb @@ -5,24 +5,38 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Variablen in Python\n", + "\n", "In Python werden variablen initialisiert, sobald sie einen Wert zugewiesen bekommen.\n", "Es benötigt weder die Verwendung eines Keywords (wie z.B. new), Noch die Angabe eines Datentypen.\n", "Dies ist nämlich nicht erforderlich, da alle variablen als Objekte angesehen werden. Python bestimmt im Hintergrund, um welchen Datentyp es sich hierbei handelt. \n", "\n", "Das Einfachste Beispiel lautet ganz einfach `x = 5`.\n", "\n", - "In Python ist es üblich ein sogenanntes **Snake Case** naming zu wählen, nicht wie in Java Camel oder Pascal Case.\n", - "Dabei werden Wörter einfach mit einem Unterstrich (also \"_\") getrennt. \n", - "Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben. Konnstanten werden mit **UPPERCASE** style benannt.\n", + "In Python ist es üblich ein sogenanntes **snake_case**-Naming zu wählen, nicht wie in Java das \"camelCase\" oder \"PascalCase\".\n", + "* Dabei werden Wörter mit einem Unterstrich (also \"_\") getrennt. \n", + "* Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben. Der Name von Konstanten besteht nur aus Grossbuchstaben, einzelne Wörter werden mit einem Unterstrich kombiniert.\n", "\n", "Einige Beispiele für die Initialisierung und Operationen mit Variablen: " ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n", + "7.0\n", + "7.0\n", + "3\n", + "hello world\n" + ] + } + ], "source": [ "MY_INT_CONSTANT = 7\n", "print(MY_INT_CONSTANT) # Output: 7\n", @@ -39,61 +53,7 @@ "# Initialisierung mit \", der Apostroph wird hier als character angesehen.\n", "my_string3 = \"Don't worry about apostrophes\"\n", "# Initialisierung mit ', Anführuns- und Schlusszeichen werden hier als character angesehen.\n", - "my_string4 = 'I just want to say \"Hello\"'\n", - "\n", - "my_int2 = 1\n", - "my_int3 = 2\n", - "my_int4 = my_int2 + my_int3\n", - "print(my_int4) # Output: 3\n", - "\n", - "\n", - "hello = \"hello\"\n", - "world = \"world\"\n", - "hello_world = hello + \" \" + world\n", - "print(hello_world) # Output: hello world" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Aber Vorsicht! Zahlen können nicht mit Strings addiert werden! Folgender Code wirft einen Error:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This will not work!\n", - "my_number = 1\n", - "my_string = \"hello\"\n", - "\n", - "print(my_string + my_number) # TypeError" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Der Fehler wird hier zu Laufzeit des Programms geworfen, der Compiler bemerkt den Fehler nämlich nicht.\n", - "Die Lösung des Problems sind sogenannte formatted Strings oder einfach f-Strings. Eine Möglichkeit ist die folgende:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "my_number = 1\n", - "my_string = \"hello\"\n", - "\n", - "# Output: my_number is 1 and my_string is \"hello\"\n", - "print(f'my_number is {my_number} and my_string is \"{my_string}\"')" + "my_string4 = 'I just want to say \"Hello\"'" ] }, { @@ -120,24 +80,7 @@ "metadata": {}, "source": [ "Hier wurde x der Wert 10, y der Wert 41 und z den Wert 5.0 zugewiesen.\n", - "In der zweiten Zeile wurde den Variablen a, b und c jeweils der String \"Hello\" zugewiesen.\n", - "\n", - "Zusatz: Casting\n", - "\n", - "Wie auch in anderen Programmiersprachen können Datentypen gecastet werden.\n", - "Folgend einige Beispiele, das Prinzip sollte klar sein:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = str(100) # a = '100'\n", - "b = int(4.2) # b = 4\n", - "c = float(7) # c = 7.0\n", - "d = int('42') # d = 42" + "In der zweiten Zeile wurde den Variablen a, b und c jeweils der String \"Hello\" zugewiesen." ] } ], @@ -157,7 +100,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.10" }, "orig_nbformat": 4 }, diff --git a/docs/011_Typen.ipynb b/docs/011_Typen.ipynb new file mode 100644 index 0000000..da0a9b5 --- /dev/null +++ b/docs/011_Typen.ipynb @@ -0,0 +1,449 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Typen in Python" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zahlen\n", + "\n", + "In Python kannst du Variablen von Zahlen wie folgt erstellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "zahl1 = 1\n", + "zahl2 = 2" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Und ausserdem kannst du auf Zahlen (und solchen Variablen) bestimmte Operationen durchführen, z.B. eine Addition. In nächsten Beispiel erstellen wir neue Variablen, die aus mehreren Variablen gleichzeitig erstellt werden:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n" + ] + } + ], + "source": [ + "zahl3 = zahl1 + zahl2\n", + "print(zahl3) # Output: 3" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im obigen Beispiel haben wir folgendes in der Variable `my_int4` gespeichert:\n", + "\n", + "```python\n", + "my_int4 = 1 + 2\n", + "```\n", + "\n", + "Folglich führt `print(my_int4)` zu folgender Ausgabe:\n", + "```\n", + "3\n", + "```\n", + "\n", + "\n", + "Wir haben also gesehen, dass wir Zahlen addieren können. Folgende Operationen sind zudem möglich:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Addition\", 1 + 2 + 3) # Keine der Operationen ist auf 2 Zahlen begrenzt.\n", + "print(\"Subtraktion\", 10 - 1)\n", + "print(\"Multiplikation\", 7 * 8)\n", + "print(\"Division\", 10 / 2)\n", + "print(\"Hochrechnen\", 5**2)\n", + "\n", + "# Zudem kannst du diese Operationen auch kombinieren:\n", + "print(\"Add und Sub\", 1 + 2 - 3)\n", + "print(\"Punkt vor Strich\", 1 + 2 * 3)\n", + "print(\"Klammern\", (1 + 2) * 3)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zahlen-Typen\n", + "Ist dir aufgefallen, dass alle Operationen eine Ganzzahl zurückgegeben haben abgesehen von der Division?\n", + "\n", + "```python\n", + "print(\"Division\", 10 / 2)\n", + "```\n", + "\n", + "Der Grund hierfür ist für dich sicher offensichtlich: Die Division ist die einzige Operation, die aus zwei Ganzzahlen eine Zahl mit Kommastellen generieren könnte. Die Division `10 / 2` würde mathematisch gesehen zwar eine Ganzzahl zurückgeben, aber Python gibt bei einer Division immer eine Fliesskommazahl zurück.\n", + "\n", + "Und das ist auch das Praktische an Python! In anderen Programmiersprachen hättest du eine abgerundete Ganzzahl erhalten. Daher musst du dich in Python nicht zwingend mit den verschiedenen Zahlen-Typen auseinander setzen.\n", + "\n", + "Lass' und diese trotzdem rasch anschauen:\n", + "\n", + "* Ganzzahlen sind `int`s.\n", + "* Fliesskommazahlen sind meistens `float`.\n", + "\n", + "Möchtest du bei einer Variable angeben, dass sie eine Ganzzahl ist, dann kannst du das wie folgt tun:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "ganz_zahl: int = 3\n", + "komma_zahl: float = 6.0" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bitte beachte im obigen Beispiel, dass die Angabe von `: int` gar nichts macht. Diese Angabe dient dem/der Entwickler:in." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## String (Text)\n", + "Du kannst wie folgt Variablen mit Text-Inhalt erstellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "hello = \"hello\"\n", + "world = \"world\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ausserdem kannst du einzelne solche Text-Variablen miteinander kombinieren:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello world\n" + ] + } + ], + "source": [ + "hello_world = hello + \" \" + world\n", + "print(hello_world) # Output: hello world" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Du kannst auch Zahlen beim Kombinieren von Variablen mit Strings verwenden. Folgender Code wird nicht funktionieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# This will not work!\n", + "my_number = 1\n", + "my_string = \"hello\"\n", + "\n", + "print(my_string + my_number) # TypeError" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Der Fehler wird hier zu Laufzeit des Programms geworfen, der Compiler bemerkt den Fehler nämlich nicht.\n", + "Die Lösung des Problems sind sogenannte formatted Strings oder einfach f-Strings. Eine Möglichkeit ist die folgende:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "my_number is 1 and my_string is \"hello\"\n" + ] + } + ], + "source": [ + "my_number = 1\n", + "my_string = \"hello\"\n", + "\n", + "# Output: my_number is 1 and my_string is \"hello\"\n", + "print(f'my_number is {my_number} and my_string is \"{my_string}\"')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Oder, du \"castest\" die Zahlen zu Strings (die `str(...)`-Funktion wandelt etwas in einen String um.):" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "my_number is \"1\" and my_string is \"hello\"\n" + ] + } + ], + "source": [ + "print('my_number is \"' + str(my_number) + '\" and my_string is \"' + str(my_string) + '\"')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du bei einer String-Variable angeben, dass es sich dabei um einen String handelt, dann kannst du das wie folgt tun:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "my_string: str = \"Hello World\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Booleans\n", + "\n", + "Der letzte zentrale Datentyp in Python sind sogenannte Booleans.\n", + "\n", + "Ein Boolean kann genau 1 von 2 Werten einnehmen:\n", + "* `True`, bedeutet wahr bzw. zutreffend\n", + "* `False` für nicht-zutreffend.\n", + "\n", + "Eine Boolean-Variable kannst du wie folgt definieren:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True False False True\n" + ] + } + ], + "source": [ + "bool1 = True\n", + "bool2 = False\n", + "\n", + "bool3 = bool1 and bool2\n", + "bool4 = bool1 or bool2\n", + "\n", + "print(bool1, bool2, bool3, bool4)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Oft verwendest du Booleans im Zusammenhang mit Bedingungen:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There we go!\n" + ] + } + ], + "source": [ + "if (bool1):\n", + " print(\"There we go!\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Bedingungen werden (meistens) Booleans angegeben: Wenn dieser Wert gleich `True` ist, wird der innere Block ausgeführt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im ersten Beispiel zu den Booleans hast du auch solche Operationen auf Booleans gesehen:\n", + "\n", + "```python\n", + "bool3 = bool1 and bool2 # False\n", + "bool4 = bool1 or bool2 # True\n", + "```\n", + "\n", + "* Ein `and` gibt `True` zurück, wenn beide Werte `True` sind, ansonsten `False`.\n", + "* Ein `or` gibt `True` zurück, wenn **mindestens** eine der beiden Werte `True` ist, ansonsten `False`.\n", + "\n", + "Du kannst auch aus einer Zahl einen Boolean generieren:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False True\n" + ] + } + ], + "source": [ + "bool5 = bool(0)\n", + "bool6 = bool(1)\n", + "\n", + "print(bool5, bool6)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Casting\n", + "\n", + "Du wirst in die Situation kommen, wo du z.B. einen String hast, du aber eine `int`-Variable haben musst.\n", + "\n", + "Hier kommst das \"Casting\" ins Spiel. Damit kannst du einen Wert eines Types in einen Wert eines anderen Types umwandeln.\n", + "\n", + "Versuche bitte, folgendes Beispiel zu verstehen. Wenn du Schwierigkeiten damit hast, dann frage bitte nach." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100 4 7.0 42\n", + " \n" + ] + } + ], + "source": [ + "a = str(100) # a = '100'\n", + "b = int(4.2) # b = 4\n", + "c = float(7) # c = 7.0\n", + "d = int('42') # d = 42\n", + "\n", + "print(a, b, c, d)\n", + "\n", + "# type(...) gibt dir an, was für ein Typ die Variable hat:\n", + "print(type(a), type(b), type(c), type(d))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/015Strings.ipynb b/docs/015Strings.ipynb index f74d7d3..fb626d7 100644 --- a/docs/015Strings.ipynb +++ b/docs/015Strings.ipynb @@ -5,6 +5,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Strings\n", + "\n", "Strings können in Python mit einfachen oder doppelten Anführungszeichen initialisiert werden.\n", "Ebenfalls ist es möglich, Strings über mehrere Zeilen mit dreifach doppelten oder dreifach einfachen Anführungszeichen zu initialisieren.\n", "Hierbei werden die Leer- und Enterzeichen mitgespeichert. Ein String über 3 Zeilen wird bei einem `print()` Aufruf auch über 3 Zeilen in der Konsole ausgegeben.\n", @@ -40,9 +42,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Strings sind wie Arrays! Man kann auf die Elemente (Character; Buchstaben) mit dem `[]` Operator zugreifen.\n", - "Ebenfalls kann man mit Loops über Strings iterieren oder die die Länge des Strings ausgeben lassen.\n", - "Welche Loops es gibt und wie man sie implementiert wird in einem späteren Kappitel behandelt.\n", + "Strings sind wie Arrays bzw. Listen!\n", + "\n", + "* Man kann auf die Elemente (Character bzw. Buchstaben) mit dem `[]` Operator zugreifen.\n", + "* Ebenfalls kann man mit Loops über Strings iterieren oder die die Länge des Strings ausgeben lassen.\n", + "* Welche Loops es gibt und wie man sie implementiert wird in einem späteren Kapitel behandelt.\n", + "\n", "Einige Operationen mit Strings sind im nachfolgenden Code zu finden:" ] }, @@ -60,6 +65,7 @@ "for x in a:\n", " print(x)\n", "\n", + "# Der `in`-Operator gibt `True` zurück, wenn das vor dem `in` im Wert rechts daneben vorkommt:\n", "print(\"orl\" in a) # True\n", "print(\"i\" not in a) # True" ] @@ -69,7 +75,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Eine weitere coole Operation auf Strings ist das sogenannte **Slicing**. \n", + "## Slicing\n", + "\n", + "Eine weitere coole Operation auf Strings ist das sogenannte **Slicing**.\n", + "\n", "Wie der Name schon suggeriert, kann man Strings in verschiedene Teile zerlegen. Dabei nehmen wir aber nicht einzelne Buchstaben wie vorher,\n", "sondern ganze Teile. Einige slicing Operationen sind:" ] @@ -105,8 +114,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wie auch in Java hat Python einige vordefinierte Methoden auf Strings. Einige sind nachfolgend Aufgelistet:\n", - "Falls du noch weitere Methoden sehen möchtest gibt es hier eine grosse Liste: https://www.w3schools.com/python/python_strings_methods.asp" + "Wie auch in Java hat Python einige vordefinierte Methoden auf Strings.\n", + "\n", + "Einige sind nachfolgend Aufgelistet.\n", + "\n", + "(Falls du noch weitere Methoden sehen möchtest gibt es hier eine grosse Liste: https://www.w3schools.com/python/python_strings_methods.asp)" ] }, { @@ -142,7 +154,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Escape Character\n", + "## Escape Character\n", "\n", "Um Zeichen in einem String hinzufügen zu können, welche normalerweise nicht erlaubt sind, kann ein `\\` verwendet werden.\n", "Es gibt auch weitere spezielle Zeichen, welche mit Hilfe eines Backslashes in einen String eingefügt werden können." @@ -167,8 +179,54 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\\n newline\n", - "\\t tab" + "Möchtest du eine neue Zeile in einem String einfügen, dann kannst du das mit `\\n` (n steht für \"newline\") tun:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, it's me.\n", + "Hello from the other side\n" + ] + } + ], + "source": [ + "print(\"Hello, it's me.\\nHello from the other side\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In bestimmten Fällen möchtest du auch Tabulatoren hinzufügen (z.B. wenn du rasch einen Text mit mehreren Spalten generieren möchtest, denn du dann direkt in Excel einfügen kannst).\n", + "\n", + "Dies kannst du mit dem String `\\t` (t wie \"tab\") erreichen:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "name \t age \t weight\n", + "Mario \t 1 \t 500\n" + ] + } + ], + "source": [ + "print(\"name \\t age \\t weight\")\n", + "print(\"Mario \\t 1 \\t 500\")" ] } ], @@ -179,8 +237,16 @@ "name": "python3" }, "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", "name": "python", - "version": "3.9.13" + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" }, "orig_nbformat": 4 }, diff --git a/docs/020Lists.ipynb b/docs/020Lists.ipynb index 42b95d9..7b65e65 100644 --- a/docs/020Lists.ipynb +++ b/docs/020Lists.ipynb @@ -5,9 +5,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Listen\n", + "\n", "In Python gibt es keine Arrays, dafür Listen. \n", - "Eine Liste (engl \"List\") ist im Prinzip ein Array, benutzt auch die gleiche Syntax wie ein Array in Java, hat aber die Funktionalitäten einer ArrayList.\n", - "Wir sehen im folgenden Code-Beispiel wie mit Listen gearbeitet werden kann. \n", + "Eine Liste (engl \"List\") benutzt eine ähnliche Syntax wie ein Array in Java, hat aber die Funktionalitäten einer `List`.\n", + "\n", + "Wir sehen im folgenden Code-Beispiel wie mit Listen gearbeitet werden kann.\n", + "\n", "Da in Python alle Variablen als Objekte gespeichert sind, kann man in eine Liste auch verschiedene Datentypen einfügen.\n", "Aber Vorsicht! Dies ist nicht zu empfehlen und Fehleranfällig!\n", "Einige Funktionen, wie zum Beispiel das Sortieren funktioniert nicht bei einer Liste mit unterschiedlichen Datentypen!" @@ -38,7 +42,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In diesem Beispiel sieht man, dass das Printen einer Liste einfach mit `print(list)` machbar ist. Es braucht hierfür keine toString Methode wie z.B. in Java.\n", + "In diesem Beispiel sieht man, dass das Ausgeben einer Liste einfach mit `print(list)` machbar ist. Es braucht hierfür keine `toString()`-Methode wie z.B. in Java.\n", "Hilfreiche Operationen bezüglich Listen sind die folgenden:" ] }, diff --git a/docs/022_Listen_Komprehensionen.ipynb b/docs/022_Listen_Komprehensionen.ipynb new file mode 100644 index 0000000..28c085c --- /dev/null +++ b/docs/022_Listen_Komprehensionen.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Listen-Komprehensionen\n", + "Listen-Komprehensionen in Python sind eine Möglichkeit, um neue Listen auf Basis von existierenden iterierbaren Objekten zu erstellen. Sie bestehen aus einer einzigen Codezeile, welche die Operation angibt, die auf jedem Element des iterierbaren Objekts durchgeführt werden soll. Die resultierende Liste wird on-the-fly generiert und als einzelner Ausdruck zurückgegeben.\n", + "\n", + "Im Allgemeinen hat eine Listen-Komprehension die folgende Syntax:\n", + "\n", + "```python\n", + "[expression for variable in iterable]\n", + "```\n", + "\n", + "Hierbei ist expression ein beliebiger, gültiger Python-Ausdruck, welcher einen Wert produziert. variable ist der Name der Schleifenvariable, welche jeden Wert in iterable annimmt. iterable ist ein iterierbares Objekt (z.B. eine Liste, ein Tuple, ein Range-Objekt), welches die Werte für variable generiert.\n", + "\n", + "Die Listen-Komprehension erzeugt dann eine neue Liste, indem der expression auf jeden Wert von variable in iterable angewendet wird.\n", + "\n", + "Zum Beispiel generiert die Listen-Komprehension `[i * 2 for i in range(5)]` die Liste `[0, 2, 4, 6, 8]`, indem sie den Ausdruck `i * 2` auf jeden Wert von `i` im Bereich von 0 bis 4 anwendet.\n", + "\n", + "Hier sind noch ein paar weitere Beispiele von Listen-Komprehensionen:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", + "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", + "[('Apfel', 5), ('Banane', 6), ('Kirsche', 7)]\n" + ] + } + ], + "source": [ + "# Quadrate von Zahlen von 1 bis 10\n", + "quadrat = [i ** 2 for i in range(1, 11)]\n", + "print(quadrat) # Ausgabe: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", + "\n", + "# Gerade Zahlen von 0 bis 20\n", + "gerade_zahlen = [i for i in range(21) if i % 2 == 0]\n", + "print(gerade_zahlen) # Ausgabe: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", + "\n", + "# Liste von Tupeln\n", + "woerter = [\"Apfel\", \"Banane\", \"Kirsche\"]\n", + "tupel = [(wort, len(wort)) for wort in woerter]\n", + "print(tupel) # Ausgabe: [('Apfel', 5), ('Banane', 6), ('Kirsche', 6)]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/025Sets.ipynb b/docs/025Sets.ipynb index 9231433..ada22ca 100644 --- a/docs/025Sets.ipynb +++ b/docs/025Sets.ipynb @@ -5,6 +5,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Sets\n", + "\n", "Python-Sets sind eine unglaublich nützliche Datenstruktur, mit der man ungeordnete, eindeutige Elemente speichern kann. Sie ähneln Listen und Tupeln, aber Sets können keine doppelten Werte enthalten. In dieser Einführung werden wir die Grundlagen zum Erstellen und Verwenden von Sets sowie einige gängige Set-Operationen behandeln.\n", "\n", "# Ein Set erstellen\n", @@ -13,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -21,9 +23,9 @@ "output_type": "stream", "text": [ "set()\n", - "{'apple', 'banana', 'orange'}\n", + "{'orange', 'banana', 'apple'}\n", "{1, 2, 3, 4}\n", - "{'red', 'blue', 'green'}\n", + "{'blue', 'green', 'red'}\n", "{False, True, 2, 3, 'hello'}\n" ] } @@ -57,7 +59,40 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Grundlegende Set-Operationen\n", + "## List in Set umwandeln\n", + "\n", + "Hast du eine Liste, und du möchtest nun wissen, wie viele verschiedene Elemente diese besitzt (also du willst keine Duplikate), dann bietet Python mit `set(...)` eine sehr praktische Funktion an:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All values in the list: {1, 2, 3, 4, 5, 99}\n", + "The list contains 6 different values.\n" + ] + } + ], + "source": [ + "my_list = [1,2,3,4,5,1,1,4,3,99]\n", + "\n", + "values = set(my_list)\n", + "\n", + "print(\"All values in the list:\", values)\n", + "print(f\"The list contains {len(values)} different values.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grundlegende Set-Operationen\n", "Sets haben integrierte Methoden, mit denen Sie verschiedene Operationen ausführen können, wie das Hinzufügen von Elementen, das Entfernen von Elementen und das Überprüfen, ob ein Element in einem Set enthalten ist." ] }, @@ -107,7 +142,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Häufige Set-Operationen\n", + "## Häufige Set-Operationen\n", "Python-Sets unterstützen auch häufige mathematische Set-Operationen wie Vereinigung, Schnittmenge, Differenz und symmetrische Differenz." ] }, @@ -163,7 +198,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.10" }, "orig_nbformat": 4 }, diff --git a/docs/027Tuples.ipynb b/docs/027Tuples.ipynb index 4908abd..f9aab36 100644 --- a/docs/027Tuples.ipynb +++ b/docs/027Tuples.ipynb @@ -5,6 +5,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# Tupel\n", + "\n", "Ein Tupel ist ein Datencontainer in Python, der dazu verwendet wird, eine Sammlung von Werten zu speichern. Ein Tupel kann mehrere Werte enthalten, die nicht geändert werden können. Das bedeutet, dass man den Inhalt des Tupels nicht nach der Erstellung ändern kann.\n", "\n", "Man kann ein Tupel in Python mit runden Klammern erstellen. Hier sind einige Beispiele für Tupel:" From 0ec8b23aac31d7e6c280229e6820cc959fb2003d Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Fri, 24 Mar 2023 23:47:05 +0100 Subject: [PATCH 21/70] dictionary and json --- docs/020Lists.ipynb | 77 ++++------------ docs/080Dictionaries.ipynb | 182 ++++++++++++++++++++++++++++++++++--- 2 files changed, 184 insertions(+), 75 deletions(-) diff --git a/docs/020Lists.ipynb b/docs/020Lists.ipynb index 7b65e65..636213a 100644 --- a/docs/020Lists.ipynb +++ b/docs/020Lists.ipynb @@ -78,33 +78,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Listen-Komprehensionen\n", - "Listen-Komprehensionen in Python sind eine Möglichkeit, um neue Listen auf Basis von existierenden iterierbaren Objekten zu erstellen. Sie bestehen aus einer einzigen Codezeile, welche die Operation angibt, die auf jedem Element des iterierbaren Objekts durchgeführt werden soll. Die resultierende Liste wird on-the-fly generiert und als einzelner Ausdruck zurückgegeben.\n", - "\n", - "Im Allgemeinen hat eine Listen-Komprehension die folgende Syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "[expression for variable in iterable]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hierbei ist expression ein beliebiger, gültiger Python-Ausdruck, welcher einen Wert produziert. variable ist der Name der Schleifenvariable, welche jeden Wert in iterable annimmt. iterable ist ein iterierbares Objekt (z.B. eine Liste, ein Tuple, ein Range-Objekt), welches die Werte für variable generiert.\n", - "\n", - "Die Listen-Komprehension erzeugt dann eine neue Liste, indem der expression auf jeden Wert von variable in iterable angewendet wird.\n", - "\n", - "Zum Beispiel generiert die Listen-Komprehension `[i * 2 for i in range(5)]` die Liste `[0, 2, 4, 6, 8]`, indem sie den Ausdruck `i * 2` auf jeden Wert von `i` im Bereich von 0 bis 4 anwendet.\n", + "## Mehrfachzuweisungen aufgrund einer Liste \n", + "Wir haben zuvor die Mehrfachzuweisung von Variablen kennengelernt. \n", + "Diese können wir nun anwenden, um Werte direkt aus einer Liste zu extrahieren und in Variablen zu speichern.\n", "\n", - "Hier sind noch ein paar weitere Beispiele von Listen-Komprehensionen:" + "Siehe folgendes Beispiel:" ] }, { @@ -116,43 +94,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", - "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", - "[('Apfel', 5), ('Banane', 6), ('Kirsche', 7)]\n" + "31\n", + "5007\n", + "19\n" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." ] } ], - "source": [ - "# Quadrate von Zahlen von 1 bis 10\n", - "quadrat = [i ** 2 for i in range(1, 11)]\n", - "print(quadrat) # Ausgabe: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", - "\n", - "# Gerade Zahlen von 0 bis 20\n", - "gerade_zahlen = [i for i in range(21) if i % 2 == 0]\n", - "print(gerade_zahlen) # Ausgabe: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", - "\n", - "# Liste von Tupeln\n", - "woerter = [\"Apfel\", \"Banane\", \"Kirsche\"]\n", - "tupel = [(wort, len(wort)) for wort in woerter]\n", - "print(tupel) # Ausgabe: [('Apfel', 5), ('Banane', 6), ('Kirsche', 6)]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Zusatz: \n", - "Wir haben zuvor die Mehrfachzuweisung von Variablen kennengelernt. \n", - "Diese können wir nun anwenden, um Werte direkt aus einer Liste zu extrahieren und in Variablen zu speichern.\n", - "Siehe folgendes Beispiel:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], "source": [ "numbers = [31, 5007, 19]\n", "x, y, z = numbers\n", @@ -178,7 +133,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.10" }, "orig_nbformat": 4 }, diff --git a/docs/080Dictionaries.ipynb b/docs/080Dictionaries.ipynb index d11dc51..ac3ba3b 100644 --- a/docs/080Dictionaries.ipynb +++ b/docs/080Dictionaries.ipynb @@ -5,8 +5,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dictionaries funktionieren ähnlich wie Arrays (bzw. Listen). Der Zugriff auf den Inhalt erfolgt aber mit Schlüsseln (sogenannte Keys) und nicht mit indexen.\n", - "Im Folgenden Beispiel wird ein Dictionary mit email-addressen von Personen erstellt." + "# Dictionaries\n", + "Dictionaries funktionieren ähnlich wie Arrays (bzw. Listen). Der Zugriff auf den Inhalt erfolgt aber mit Schlüsseln (sogenannte Keys) und nicht mit Indexen.\n", + "Im Folgenden Beispiel wird ein Dictionary mit Email-Adressen von Personen erstellt." ] }, { @@ -61,20 +62,159 @@ "metadata": {}, "outputs": [], "source": [ - "dict_name = {} # Leeres Dictionary erzeugen\n", + "dict_name = {} # Leeres Dictionary erzeugen.\n", "\n", - "dict_name[\"Key\"] = \"value\" # Einfügen bzw. ändern eines Elements\n", - "dict_name.update({\"key\": \"value\"}) # Einfügen bzw. ändern eines Elements\n", - "del dict_name[\"Key\"] # Eintrag löschen\n", - "dict_name.pop(\"key\") # Eintrag löschen\n", - "dict_name.popitem() # löscht den letzten hinzugefügten Eintrag\n", - "dict_name.clear() # Löschen aller Elemente\n", + "dict_name[\"Key\"] = \"value\" # Einfügen bzw. ändern eines Elements.\n", + "dict_name.update({\"key\": \"value\"}) # Einfügen bzw. ändern eines Elements.\n", + "del dict_name[\"Key\"] # Eintrag löschen.\n", + "dict_name.pop(\"key\") # Eintrag löschen.\n", + "dict_name.popitem() # löscht den letzten hinzugefügten Eintrag.\n", + "dict_name.clear() # Löschen aller Elemente.\n", "\n", - "# gibt den entsprechenden value zurück oder false, falls er nicht existiert\n", + "# Gibt den entsprechenden value zurück oder false, falls er nicht existiert:\n", "dict_name.get(\"key\")\n", - "dict_name.items() # gibt eine liste mit allen keys und values als tupel zurück\n", - "dict_name.keys() # gibt ein liste mit allen keys zurück\n", - "dict_name.values() # gibt eine liste mit allen values zurück" + "dict_name.items() # Gibt eine liste mit allen keys und values als Tupel zurück.\n", + "dict_name.keys() # Gibt ein liste mit allen keys zurück.\n", + "dict_name.values() # Gibt eine liste mit allen values zurück." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## JSON in Python\n", + "Du wirst in Python ziemlich sicher einmal Daten in einem JSON-Format zu verarbeiten haben.\n", + "\n", + "Wenn du z.B. einen Server anfragst für bestimmte Daten, dann könntest du ein JSON wie dieses zurückbekommen:\n", + "\n", + "```json\n", + "{\n", + " \"name\": \"Colonel Toad\",\n", + " \"firstShared\": \"2011-08-01\",\n", + " \"origin\": \"Pinterest\"\n", + "}\n", + "```\n", + "\n", + "Nun kannst du dieses JSON in ein Dictionary laden und entsprechende Operationen darauf ausführen:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'Colonel Toad', 'firstShared': '2011-08-01', 'origin': 'Pinterest'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import json\n", + "\n", + "json_string = '{\"name\": \"Colonel Toad\", \"firstShared\": \"2011-08-01\", \"origin\": \"Pinterest\"}'\n", + "\n", + "my_dict: dict[str, str] = json.loads(json_string)\n", + "my_dict" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die umgekehrte Richtung geht auch:\n", + "\n", + "Möchtest du ein Dictionary in ein JSON umwandeln, dann kannst du das mit `dumps(...)` tun:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{\"a\": 3, \"b\": \"Hello\"}'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import json\n", + "\n", + "my_dict = {\"a\": 3, \"b\": \"Hello\"}\n", + "\n", + "json_string = json.dumps(my_dict)\n", + "json_string" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Typangabe\n", + "\n", + "Möchtest du bei einer Variable klar machen, dass es sich bei ihr um ein Dictionary handelt, dann kannst du das mit der Typangabe `: dict` tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_dict: dict = dict()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wenn der Type bei allen Keys und der Typ bei allen Values einheitlich sind, dann kannst du das auch angeben.\n", + "\n", + "Dies kann z.B. beim Laden eines JSON-Objekts hilfreich sein:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 1, 'b': 2}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_dict: dict[str, int] = json.loads('{\"a\": 1, \"b\": 2}')\n", + "my_dict" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bei der vorherigen Typangabe `dict[str, int]` haben wir angegeben, dass alle Keys Strings sind, und alle Values `int`-Werte sind." ] }, { @@ -87,8 +227,22 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" }, "orig_nbformat": 4 }, From 3320d6de8da853f77a259d3fa7036ba6aeb480cd Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Fri, 24 Mar 2023 23:58:32 +0100 Subject: [PATCH 22/70] adapted basic operators and changed id of it --- ...rstors.ipynb => 017_Basic_Operstors.ipynb} | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) rename docs/{030Basic_Operstors.ipynb => 017_Basic_Operstors.ipynb} (74%) diff --git a/docs/030Basic_Operstors.ipynb b/docs/017_Basic_Operstors.ipynb similarity index 74% rename from docs/030Basic_Operstors.ipynb rename to docs/017_Basic_Operstors.ipynb index 3fd0fe0..4817a61 100644 --- a/docs/030Basic_Operstors.ipynb +++ b/docs/017_Basic_Operstors.ipynb @@ -5,8 +5,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In diesem Abschnitt thematisieren wir grundlegende Operanden in Python.\n", - "Die `+`, `-`, `*`, `/` und `%` (modulo) Operanden auf Zahlen verhalten sich wie in Java. Es gilt ebenfalls Punkt vor Strich etc.\n", + "# Weitere Operationen\n", + "\n", + "Wir schauen uns hier noch einmal ein paar Operationen an, die Python speziell anbietet. Ziel dieses Kapitels ist es zu verstehen, dass in Python Operanden grundsätzlich auf alle Datentypen möglich sind." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zahlen\n", + "Im nächsten Code-Listing thematisieren wir grundlegende Zahlen-Operanden in Python.\n", + "\n", + "Die `+`, `-`, `*`, `/` und `%` (modulo)-Operanden auf Zahlen verhalten sich wie in Java. Es gilt ebenfalls Punkt vor Strich etc.\n", "Es gibt zusätzlich den `**` Operanden, welcher für das Potenzieren benutzt werden kann:" ] }, @@ -17,7 +29,7 @@ "outputs": [], "source": [ "print(1 + 2 * 3 / 4) # Output: 2.5\n", - "print(10 % 3) # Output: 1\n", + "print(10 % 3) # Modulo-Operation, sprich 3er-Rest. # Output: 1\n", "\n", "\n", "num1 = 3 ** 2 # = 3 * 3 = 9\n", @@ -31,7 +43,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Python unterstützt auch das Multiplizieren von Zeichenfolgen, um eine Zeichenfolge mit einer sich wiederholenden Sequenz zu bilden:" + "## Strings\n", + "Python unterstützt das Multiplizieren von Zeichenfolgen, um eine Zeichenfolge mit einer sich wiederholenden Sequenz zu bilden:" ] }, { @@ -49,6 +62,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## Listen\n", "Dasselbe Prinzip funktioniert auch bei Listen :" ] }, From 2a42554b8d2aee78d4949ce1871c2edc74699b31 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Sat, 25 Mar 2023 00:08:34 +0100 Subject: [PATCH 23/70] grouped pages --- docs/{ => 01_basics}/000Hello.ipynb | 0 docs/{ => 01_basics}/010Variablen.ipynb | 0 docs/{ => 01_basics}/011_Typen.ipynb | 0 docs/{ => 01_basics}/013Input_Output.ipynb | 0 docs/{ => 01_basics}/015Strings.ipynb | 0 docs/{ => 02_control_structures}/040Conditions_and_if_else.ipynb | 0 docs/{ => 02_control_structures}/050Loops.ipynb | 0 docs/{ => 02_control_structures}/060Functions.ipynb | 0 docs/{ => 03_collections}/020Lists.ipynb | 0 docs/{ => 03_collections}/022_Listen_Komprehensionen.ipynb | 0 docs/{ => 03_collections}/025Sets.ipynb | 0 docs/{ => 03_collections}/027Tuples.ipynb | 0 .../029_Basic_Operstors.ipynb} | 0 docs/{ => 03_collections}/080Dictionaries.ipynb | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename docs/{ => 01_basics}/000Hello.ipynb (100%) rename docs/{ => 01_basics}/010Variablen.ipynb (100%) rename docs/{ => 01_basics}/011_Typen.ipynb (100%) rename docs/{ => 01_basics}/013Input_Output.ipynb (100%) rename docs/{ => 01_basics}/015Strings.ipynb (100%) rename docs/{ => 02_control_structures}/040Conditions_and_if_else.ipynb (100%) rename docs/{ => 02_control_structures}/050Loops.ipynb (100%) rename docs/{ => 02_control_structures}/060Functions.ipynb (100%) rename docs/{ => 03_collections}/020Lists.ipynb (100%) rename docs/{ => 03_collections}/022_Listen_Komprehensionen.ipynb (100%) rename docs/{ => 03_collections}/025Sets.ipynb (100%) rename docs/{ => 03_collections}/027Tuples.ipynb (100%) rename docs/{017_Basic_Operstors.ipynb => 03_collections/029_Basic_Operstors.ipynb} (100%) rename docs/{ => 03_collections}/080Dictionaries.ipynb (100%) diff --git a/docs/000Hello.ipynb b/docs/01_basics/000Hello.ipynb similarity index 100% rename from docs/000Hello.ipynb rename to docs/01_basics/000Hello.ipynb diff --git a/docs/010Variablen.ipynb b/docs/01_basics/010Variablen.ipynb similarity index 100% rename from docs/010Variablen.ipynb rename to docs/01_basics/010Variablen.ipynb diff --git a/docs/011_Typen.ipynb b/docs/01_basics/011_Typen.ipynb similarity index 100% rename from docs/011_Typen.ipynb rename to docs/01_basics/011_Typen.ipynb diff --git a/docs/013Input_Output.ipynb b/docs/01_basics/013Input_Output.ipynb similarity index 100% rename from docs/013Input_Output.ipynb rename to docs/01_basics/013Input_Output.ipynb diff --git a/docs/015Strings.ipynb b/docs/01_basics/015Strings.ipynb similarity index 100% rename from docs/015Strings.ipynb rename to docs/01_basics/015Strings.ipynb diff --git a/docs/040Conditions_and_if_else.ipynb b/docs/02_control_structures/040Conditions_and_if_else.ipynb similarity index 100% rename from docs/040Conditions_and_if_else.ipynb rename to docs/02_control_structures/040Conditions_and_if_else.ipynb diff --git a/docs/050Loops.ipynb b/docs/02_control_structures/050Loops.ipynb similarity index 100% rename from docs/050Loops.ipynb rename to docs/02_control_structures/050Loops.ipynb diff --git a/docs/060Functions.ipynb b/docs/02_control_structures/060Functions.ipynb similarity index 100% rename from docs/060Functions.ipynb rename to docs/02_control_structures/060Functions.ipynb diff --git a/docs/020Lists.ipynb b/docs/03_collections/020Lists.ipynb similarity index 100% rename from docs/020Lists.ipynb rename to docs/03_collections/020Lists.ipynb diff --git a/docs/022_Listen_Komprehensionen.ipynb b/docs/03_collections/022_Listen_Komprehensionen.ipynb similarity index 100% rename from docs/022_Listen_Komprehensionen.ipynb rename to docs/03_collections/022_Listen_Komprehensionen.ipynb diff --git a/docs/025Sets.ipynb b/docs/03_collections/025Sets.ipynb similarity index 100% rename from docs/025Sets.ipynb rename to docs/03_collections/025Sets.ipynb diff --git a/docs/027Tuples.ipynb b/docs/03_collections/027Tuples.ipynb similarity index 100% rename from docs/027Tuples.ipynb rename to docs/03_collections/027Tuples.ipynb diff --git a/docs/017_Basic_Operstors.ipynb b/docs/03_collections/029_Basic_Operstors.ipynb similarity index 100% rename from docs/017_Basic_Operstors.ipynb rename to docs/03_collections/029_Basic_Operstors.ipynb diff --git a/docs/080Dictionaries.ipynb b/docs/03_collections/080Dictionaries.ipynb similarity index 100% rename from docs/080Dictionaries.ipynb rename to docs/03_collections/080Dictionaries.ipynb From 474e33c3f0f0aa0ed9b3024615bb73e6f0dae65d Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Sat, 25 Mar 2023 00:45:55 +0100 Subject: [PATCH 24/70] error handling --- .../041_exception_handling.ipynb | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 docs/04_resource_management/041_exception_handling.ipynb diff --git a/docs/04_resource_management/041_exception_handling.ipynb b/docs/04_resource_management/041_exception_handling.ipynb new file mode 100644 index 0000000..609abfd --- /dev/null +++ b/docs/04_resource_management/041_exception_handling.ipynb @@ -0,0 +1,182 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exception Handling\n", + "Während des Ausführen von Python-Code können sehr viele Fehler passieren.\n", + "\n", + "Wenn Fehler erkannt werden, dann werden Fehler (in der Programmierung meistens Ausnahmen) geworfen (auf Englisch \"raise exceptions\").\n", + "\n", + "Fehler treten z.B. auf, wenn ein unerwarteter Input geliefert wird, oder wenn versucht wird, eine Zahl durch 0 zu teilen.\n", + "\n", + "Wenn wir wissen, dass ein bestimmter Code bestimmte Fehler werfen kann und wir diese Fehler abfangen wollen, dann können wir das mit den Keywords `try` und `except` tun:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100 / 2 = 50.0\n", + "\n", + "\n" + ] + } + ], + "source": [ + "try:\n", + " number = int(input(\"Please give a number: \"))\n", + " print(f\"100 / {number} = {100/number}\")\n", + "except Exception as exception:\n", + " print(type(exception))\n", + " print(exception)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Versuche beim obigen Code Fehler zu provozieren.\n", + "\n", + "Grundsätzlich gibt es bei diesem Code zwei häufige Fehlerquellen:\n", + "1. Der User gibt nicht eine Zahl sondern sonst etwas ein -> die Eingabe kann nicht in eine Zahl umgewandelt werden.\n", + " \n", + " Dies führt zu folgender Ausgabe:\n", + " ```\n", + " \n", + " invalid literal for int() with base 10: 'ungültige Zahl'\n", + " ```\n", + "2. Der User gibt die Zahl 0 ein -> dies führt zu einer 0-Division.\n", + " \n", + " Dies führt zu dieser Ausgabe:\n", + " ```\n", + " \n", + " division by zero\n", + " ```\n", + "\n", + "Oft wirst du in die Situation kommen, dass du verschiedene Fehler verschieden oder nur bestimmte Fehler behandeln möchtest.\n", + "Hierfür bietet es sich an, verschiedene `except`-Blöcke zu definieren:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100 / 3 = 33.333333333333336\n" + ] + } + ], + "source": [ + "try:\n", + " number = int(input(\"Please give a number: \"))\n", + " print(f\"100 / {number} = {100/number}\")\n", + "except ZeroDivisionError:\n", + " print(\"Use another input than 0. Can't divide by 0.\")\n", + "except ValueError:\n", + " print(\"Please enter a valid number!\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nach dem `except`-Keyword haben wir den Typ der Exception (des Fehlers) angegeben. Der Inhalt des entsprechenden `except`-Blocks wird nur ausgeführt, wenn der Fehler vom spezifizierten Typ ist (bzw. davon erbt).\n", + "\n", + "Im allerersten `except` haben wir die Exception-Klasse `Exception` angegeben. Da die anderen Exception-Klassen wie `ZeroDivisionError` und `ValueError` eine Subklasse von `Exception` sind, werden diese Fehler auch von `except Exception` abgefangen.\n", + "\n", + "Die beiden genaueren Exceptions dienen für folgenden Zweck:\n", + "* `ZeroDivisionError`: Wird geworfen, wenn eine Zahl durch 0 geteilt wird.\n", + "* `ValueError`: Ein Parameter (hier derjenige für `input`) hat einen nicht unterstützen Wert erhalten." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vollständiges Beispiel\n", + "Der Vollständigkeit halber präsentieren wir hier ein komplettes `try-except-else-finally`-Exception Handling:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The operation succeeded. The result: 33.333333333333336\n", + "Now, let's go into vacations :)\n" + ] + } + ], + "source": [ + "try:\n", + " number = int(input(\"Please give a number: \"))\n", + " result = 100/number\n", + "except ZeroDivisionError:\n", + " print(\"Use another input than 0. Can't divide by 0.\")\n", + "except ValueError:\n", + " print(\"Please enter a valid number!\")\n", + "else:\n", + " print(\"The operation succeeded. The result:\", result)\n", + "finally:\n", + " print(\"Now, let's go into vacations :)\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Der obige Code beinhaltet\n", + "* das ursprüngliche Error-Handling, das auf `ZeroDivisionError`- und `ValueError`-Fehler behandelt.\n", + "* einen `else`-Block, der ausgeführt wird, wenn es im `try` keinen Fehler gegeben hat.\n", + "* und einen `finally`-Block, der **immer** im Anschluss noch ausgeführt wird." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 811430780d9484bcb5e9cce56c2d14a8efdd6a6e Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Sat, 25 Mar 2023 01:22:25 +0100 Subject: [PATCH 25/70] file i/o --- docs/04_resource_management/043_file_io.ipynb | 165 ++++++++++++++++++ docs/04_resource_management/random_text.txt | 3 + labs/ideas.md | 1 + 3 files changed, 169 insertions(+) create mode 100644 docs/04_resource_management/043_file_io.ipynb create mode 100644 docs/04_resource_management/random_text.txt create mode 100644 labs/ideas.md diff --git a/docs/04_resource_management/043_file_io.ipynb b/docs/04_resource_management/043_file_io.ipynb new file mode 100644 index 0000000..28553b1 --- /dev/null +++ b/docs/04_resource_management/043_file_io.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# I/O: Dateien lesen und schreiben\n", + "\n", + "Python macht das lesen und beschreiben von Dateien sehr einfach." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datei lesen\n", + "Möchtest du eine Datei lesen, dann kannst du das wie folgt tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "file = open('./random_text.txt', 'r')\n", + "\n", + "# Get the text out of the file:\n", + "content = file.read()\n", + "print(content)\n", + "\n", + "# Close the file afterwards so that this file isn't blocked:\n", + "file.close()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit `open(...)` können wir eine Datei laden. Das erste Argument ist der Pfad zur Datei. Das zweite Argument ist optional, wir haben hier `'r'` angegeben, damit klar ist, dass wir die Datei nur lesen (read) möchten.\n", + "\n", + "Die Methode `read()` hat uns den Text-Inhalt der Datei zurückgegeben und mit der `close()`-Methode schliessen wir die Datei wieder, damit der Zugriff auf sie wieder freigegeben wird.\n", + "\n", + "Nun können wir dies noch ein bisschen umschreiben:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('./random_text.txt', 'r') as file:\n", + " \n", + " for line in file:\n", + " line = line.strip()\n", + " \n", + " print(line)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im letzten Beispiel haben wir nun vom `with`-Statement Gebrauch gemacht. Dieses `with` sorgt dafür, dass automatisch in jedem Fall `file.close()` aufgerufen wird. Dateien sollten immer wieder geschlossen werden, damit der Zugriff auf diese nicht für andere blockiert wird.\n", + "\n", + "Zusätzlich kann man mit `for line in file` durch alle Zeilen durch iterieren. Dies verhindert gleichzeitig auch eine hohe Speicherauslastung, weil so nur Zeile für Zeile gelesen und in den Arbeitsspeicher kopiert wird (statt die ganze Datei auf einmal).\n", + "\n", + "`string.strip()` wird hier noch verwendet, weil meistens (immer ausser bei der letzten Zeile) am Ende der Zeile noch das Zeichen `\\n` bzw. `\\n\\r` folgt. Mit der `strip()`-Methode wir dies entfernt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datei schreiben\n", + "Möchtest du Text in eine Datei schreiben, dann kannst du das wie folgt tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('./random_output.txt', 'w') as file:\n", + " \n", + " file.write(\"Hello, it's me!\\n\")\n", + " file.write('Hello from the other side.\\n')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Beachte das `'w'` für write (also schreiben) in der `open(...)`-Methode. Dieses musst du angeben, damit du in die Datei schreiben kannst.\n", + "\n", + "Mit `write(...)` fügst du Text der Datei hinzu.\n", + "\n", + "Bitte beachte hier, dass das `'w'` bewirkt, dass eine bestehende Datei überschrieben wird. Möchtest du nur Text hinzufügen, dann verwende `'a'` wie 'append' (hinzufügen)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exception Handling\n", + "Im Zusammenhang mit Dateien passieren immer wieder Fehler.\n", + "Daher macht es Sinn, folgende Fehler auch gleich zu behandeln:\n", + "* `FileNotFoundError`: Wenn die Datei nicht gefunden werden konnte.\n", + "* `IOError`: Andere Fehler, die im Zusammenhang mit dem Dateisystem auftreten können.\n", + "\n", + "Dies könnte ungefähr so aussehen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " with open('./random_text.txt', 'r') as file:\n", + " for line in file:\n", + " line = line.strip()\n", + " print(line)\n", + "except FileNotFoundError:\n", + " print(\"Can't find the file.\")\n", + "except IOError:\n", + " print(\"An IO error occurred.\")\n", + "except Exception as e:\n", + " print(\"An unknown error occurred:\", e)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/04_resource_management/random_text.txt b/docs/04_resource_management/random_text.txt new file mode 100644 index 0000000..ab65d13 --- /dev/null +++ b/docs/04_resource_management/random_text.txt @@ -0,0 +1,3 @@ +Why did Python software engineers go to Atlantis? + +To see if they could use Pydantic models to validate the properties of the mythical sea creatures, and to check if they could apply Pydantic's strict type checking to the underwater ecosystem! \ No newline at end of file diff --git a/labs/ideas.md b/labs/ideas.md new file mode 100644 index 0000000..077c7b0 --- /dev/null +++ b/labs/ideas.md @@ -0,0 +1 @@ +* Logger mit File \ No newline at end of file From 2825aee1e2b72f77296c6a994b015fb55eae84ec Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 27 Mar 2023 09:40:26 +0200 Subject: [PATCH 26/70] renamed basic operations (order) --- .../{029_Basic_Operstors.ipynb => 021_Basic_Operstors.ipynb} | 0 docs/TODO.txt | 2 ++ 2 files changed, 2 insertions(+) rename docs/03_collections/{029_Basic_Operstors.ipynb => 021_Basic_Operstors.ipynb} (100%) diff --git a/docs/03_collections/029_Basic_Operstors.ipynb b/docs/03_collections/021_Basic_Operstors.ipynb similarity index 100% rename from docs/03_collections/029_Basic_Operstors.ipynb rename to docs/03_collections/021_Basic_Operstors.ipynb diff --git a/docs/TODO.txt b/docs/TODO.txt index 6cd186d..3d437c6 100644 --- a/docs/TODO.txt +++ b/docs/TODO.txt @@ -2,3 +2,5 @@ # https://www.learnpython.org/en/Basic_String_Operations # generators # regex +# Turtle +# Lambdas \ No newline at end of file From 7613e97121e011c48ed39336a2e5610499d79a29 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 27 Mar 2023 09:40:38 +0200 Subject: [PATCH 27/70] labs --- labs/01_basics/01_basics.ipynb | 66 ++++++++++ .../02_control_structures.ipynb | 122 ++++++++++++++++++ labs/03_collections/03_collections.ipynb | 90 +++++++++++++ .../04_resource_management.ipynb | 98 ++++++++++++++ 4 files changed, 376 insertions(+) create mode 100644 labs/01_basics/01_basics.ipynb create mode 100644 labs/02_control_structures/02_control_structures.ipynb create mode 100644 labs/03_collections/03_collections.ipynb create mode 100644 labs/04_resource_management/04_resource_management.ipynb diff --git a/labs/01_basics/01_basics.ipynb b/labs/01_basics/01_basics.ipynb new file mode 100644 index 0000000..59dc4bd --- /dev/null +++ b/labs/01_basics/01_basics.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgaben zu den Basics von Python\n", + "\n", + "Kopiere bei den Labs jeweils das Notebook (.ipynb-File) jeweils in einen eigenen Ordner und füge unterhalb der Aufgabenstellung jeweils einen neuen Code-Block hinzu." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 1 - Eingabe, Ausgabe\n", + "\n", + "Schreibe ein kleines Programm, das\n", + "* deinen Namen und dein Alter einliest\n", + "* und anschliessend \"Hallo ``, du bist `` Jahre alt.\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 2 - Zeichnen\n", + "Zeichne in der Konsole folgende Elemente:\n", + "* ein Haus\n", + "* eine Schweizerfahne." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 3 - Einfache Berechnungen\n", + "Berechne die folgenden Dinge:\n", + "\n", + "* Fläche eines Rechtecks\n", + "* Fläche eines Kreises\n", + "* Umfang eines Rechtecks\n", + "* Inhalt einer Pyramide mit quadratischen Grundriss und einer bestimmten Höhe\n", + "* Berechne dein Alter am heutigen Tag in Jahren, Monaten und Tagen\n", + "* Schreibe eine Methode, welche eine beliebige Ganzzahl als Parameter übernimmt und die Vielfache von 3 zusammen mit der Vielfache von 5 dieser Zahl summiert." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/labs/02_control_structures/02_control_structures.ipynb b/labs/02_control_structures/02_control_structures.ipynb new file mode 100644 index 0000000..9018931 --- /dev/null +++ b/labs/02_control_structures/02_control_structures.ipynb @@ -0,0 +1,122 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgeben zu Kontrollstrukturen" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 1 - Einfache String-Operationen\n", + "\n", + "Lasse den User einen Text eingeben und führe folgende Operationen auf diesem Text durch:\n", + "\n", + "* Gibt den Text in Grossbuchstaben aus.\n", + "* Gib eine Info zum Text (zusammenfassend) am Ende aus:\n", + " * Anzahl Vokale\n", + " * Anzahl Wörter" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 2 - String Slicing\n", + "Schreibe folgende Programme:\n", + "\n", + "* Der User muss seinen vollständigen Namen eingeben (Format: Vor- und Nachname, zwingend in nur einer Eingabe). Anschliessend gibst du nur den Vornamen aus.\n", + "* Bilde ein Kürzel aus diesem Vornamen und dem Nachnamen: die ersten beiden Zeichen des Vornamens sowie den letzten beiden des Nachnamens. Beispiel \"Bernhard Diener\" -> \"Beer\".\n", + "* Anschliessend gib noch jeden zweiten Buchstaben des Nachnamens aus." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 3 - String-Konkatenation\n", + "Schreibe ein Programm, das \"Your random number for today: {random_number}\" ausgibt, wobei `random_number` mit einer zufälligen Zahl ersetzt wird.\n", + "\n", + "Eine zufällige Zahl bekommst du so:\n", + "\n", + "```python\n", + "import random\n", + "\n", + "random_number = random.randint(1, 100)\n", + "```\n", + "\n", + "Mache das gleiche für eine Fliesskommazahl zwischen 0 und 1." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 4 - Conditions\n", + "Schreibe Programme, die folgendes tun:\n", + "* Der User gibt sein Alter ein. Wenn das Alter\n", + " * kleiner als 13 ist, dann wird \"Kind\" ausgegeben.\n", + " * jünger als 18: \"Teenager\"\n", + " * Jünger als 65: Erwachsener\n", + " * Ansonsten: Senior.\n", + "\n", + "* Schaltjahr:\n", + " * Schreibe eine Funktion, die einen Boolean zurückgibt, wenn ein bestimmtes Jahr ein Schaltjahr (Englisch: 'leap year') ist. Informiere dich hierfür, welche Regeln das gelten (z.B. auf Wikipedia).\n", + " * Der User gibt ein Jahr ein und das Programm beantwortet das mit einem Satz.\n", + "* Der User kann zwei Zahlen eingeben und du gibst ihm Auskunft, welche der beiden Zahlen grösser war.\n", + "* Schreibe ein Programm, dass darüber auskunft gibt, ob die User-Eingabe eine gerade oder ungerade Zahl ist." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 5 - Loops\n", + "\n", + "* Schreibe eine Methode, die überprüft, ob eine Zahl eine Primzahl ist.\n", + "* Schreibe ein Programm, das den User nach einer Zahl fragt und dann die ersten `n` (n = Usereingabe) Elemente der Fibonacci-Reihe ausgibt.\n", + "* Schreibe ein Programm, in welchem der Computer sich eine Zahl von 0 - 100 überlegt. Anschliessend muss der User diese Zahl erraten. Das Spiel geht solange, bis die Zahl erraten wurde oder bis 7 Versuche erreicht wurden. Der Computer kann nur Antworten mit\n", + " * \"grösser\"\n", + " * \"kleiner\"\n", + " * oder \"richtig\".\n", + "* Anschliessend noch einmal das Ratespiel, aber umgekehrt. Nun muss der Computer raten. Schreibe das Programm so, dass der Computer strukturiert beim Raten vorgeht, also nicht immer eine komplett zufällige Zahl rät. Achte darauf, dass die User-Eingabe nicht abhängig von der Gross-Klein-Schreibung ist.\n", + "* Schreibe ein Programm, wo der User einen String eingeben kann. Anschliessend wird der String rückwärts ausgegeben." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 6 - Ein paar Funktionen\n", + "Schreibe für folgendes Funktionen:\n", + "\n", + "* Summen von 2 Zahlen berechnen.\n", + "* Kleinstes gemeinsames Vielfaches (kgV) von zwei Zahlen Berechnen\n", + "* Löse für gegebene `a`, `b` und `c` die Gleichung $ax^2+bx+c=0$. Hierfür kannst du die \"Mitternachtsformel\" brauchen. Denke daran, dass es zwei Lösungen geben kann. Verwende also einen sinnvollen Rückgabe-Typ. (Das Programm muss nur Lösungen zurückgeben, wenn es reelle Lösungen (also keine komplexen) gibt.)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/labs/03_collections/03_collections.ipynb b/labs/03_collections/03_collections.ipynb new file mode 100644 index 0000000..8c76616 --- /dev/null +++ b/labs/03_collections/03_collections.ipynb @@ -0,0 +1,90 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgaben zu Collections" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgabe 1 - Listen\n", + "* Schreibe eine Funktion, die als Eingabe eine Liste mit Zahlen sowie einen Index `i`(also Zahl) erwartet und das `i`-te Element aus dieser Liste zurückgibt.\n", + "* Schreibe eine Funktion, die als Eingabe eine Liste mit Zahlen erwartet und das grösste Element in der Liste zurückgibt.\n", + "* Schreibe eine Funktion, die als Eingabe zwei Listen gleicher Länge mit Zahlen erwartet und eine Liste mit den Summen aus beiden Listen zurückgibt. Beispiel: [1, 2, 3] und [4, 5, 6] -> [5, 7, 9]\n", + "* Schreibe eine Funktion, die als Eingabe eine Liste mit Zahlen erwartet und die Summe aller Zahlen zurückgibt.\n", + "* Schreibe eine Funktion, die als Eingabe eine Liste mit Strings erwartet und dann eine Liste zurückgibt, wo die Elemente alphabetisch sortiert sind.\n", + "* Wir haben eine Liste mit folgenden Elementen: `[21, -1, 2, 20, -24, 21, 25, -16, -10, -2, -20, 15, -15, 0, -16, -19, 13, 24, -3, 7]`. Schreibe eine Methode, welche aus der Liste alle Zahlen sucht, welche nicht mehr als 10 von der Zahl -6 abweichen. Schreibe diese Zahlen in eine neue Liste. Die Methode liefert das neue Array zurück.\n", + "* Verwende noch einmal die gleichen Zahlen. Schreibe eine Methode, welche alle Zahlen in positive Zahlen verwandelt und diese in eine neue Liste schreibt. Die Methode liefert die neue Liste zurück." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 2 - Sets\n", + "* Schreibe eine Funktion, die als Eingabe eine Liste mit sehr vielen Wörter erhält. Als Rückgabe: verschiedenen Elemente (also keine Duplikate).\n", + "* Schreibe eine Funktion, die dir aus einer Liste alle Elemente ausgibt, die genau 1x in der Liste vorkommen. Lass' dir Helfen mit einer `set`." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 3 - Dictionaries\n", + "* Die gleiche wie in Aufgabe 2 aber mit Mengenangabe. Schreibe eine Funktion, die als Eingabe eine Liste mit sehr vielen Wörter erhält. Als Rückgabe ein Dictionary: das Wort als Key, die Anzahl Vorkommnisse in der Liste als Value.\n", + "* Mit Dictionaries kannst du dir auch sehr viel Programm-Code ersparen. Das kannst du anhand eines kleinen Taschenrechners sehen. Ziel soll es sein, dass der User 2 Zahlen und einen Operator wie `+`, `-`, `*`, `/` eingeben kann. Anschliessend führt dein Programm diese Operation durch. Speichere hierfür alle Operationen in einem Dictionary: als Key der Operator als String (also z.B. `+`) und als Value eine Funktion, die zwei Zahlen erwartet. Folgendes Beispiel zeigt, wie du Funktionen als Variablen brauchen kannst:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13\n", + "42\n" + ] + } + ], + "source": [ + "def calculate(a: float, b: float, operator):\n", + " return operator(a, b)\n", + "\n", + "print( calculate(6, 7, lambda a,b: a + b) )\n", + "print( calculate(6, 7, lambda a,b: a * b) )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Schreibe eine Methode, die zwei Sets als Argument akzeptiert. Als Rückgabe liefert sie ein Dictionary, das die Elemente der beiden Sets als Key besitzt und der jeweilige Value ist `True` oder `False`, je nachdem ob das Element in beiden Funktionen vorkommt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/labs/04_resource_management/04_resource_management.ipynb b/labs/04_resource_management/04_resource_management.ipynb new file mode 100644 index 0000000..a44c675 --- /dev/null +++ b/labs/04_resource_management/04_resource_management.ipynb @@ -0,0 +1,98 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgaben zu Exception Handling und Dateien" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 1 - JSON laden\n", + "Schreibe ein Programm, dass diese Datei lädt: https://raw.githubusercontent.com/it-ninjas/labs/master/static/files/json/chat.json\n", + "\n", + "Anschliessend gibt es alle Namen aus (egal ob in \"available\" oder \"unavailable\")." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 2 - CSV laden\n", + "Lade dir das CSV herunter, das eine Auflistung von PLZ und Gemeindenamen enthält: https://labs.it-ninjas.ch/files/csv/Postleitzahlen_ISO-8859-1.csv\n", + "\n", + "* Speichere dir diese Daten in einem Dictionary.\n", + "* Gib folgende Informationen aus:\n", + " * Anzahl PLZ.\n", + " * Kleinste PLZ der Gemeinde Bern.\n", + " * Grösste PLZ der Gemeinde Bern.\n", + " * Anzahl Gemeinden mit mehr als 10 Buchstaben.\n", + " * Anzahl Gemeinden mit 7 Buchstaben.\n", + " * Anzahl Gemeinden mit der Buchstabenfolge 'ent'.\n", + " * Gemeinden mit 3 Buchstaben.\n", + " * Anzahl Buchstaben der kleinsten Gemeinden.\n", + " * Kleinsten Gemeinden.\n", + " * Anzahl Buchstaben der Gemeinden mit den meisten Buchstaben.\n", + " * Gemeinden mit den meisten Buchstaben.\n", + "* Anschliessend speicherst du deine Ausgaben in eine Datei: \"summary.csv\".\n", + "\n", + "Info: Teile dieser Aufgabe stammen von hier: https://labs.it-ninjas.ch/labs/java/java-collections/03_map/\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 3 - Logger\n", + "In produktiven Systemen interessierst du dich dafür, was so ausgegeben wird. Bis anhin haben wir für Ausgaben immer `print(...)` verwendet. Nun wäre es praktisch, wenn wir z.B. nachschauen könnten, wieso das Programm gestern bei einer Operation abgebrochen ist oder so ähnlich.\n", + "\n", + "Erstelle eine Methode `log(message: str)`, welche\n", + "* das gleiche wie `print(...)` tut (bzw. diese aufruft)\n", + "* und die `message` automatisch in einer Datei hinzufügt (Englisch: 'append').\n", + "\n", + "Erweitere die Aufgabe 2 mit einem sinnvollen Exception Handling:\n", + "* Was, wenn im CSV ein \",\" statt einem \";\" verwendet wurde?\n", + "* Was, wenn die Datei nicht geladen werden kann?\n", + "* Was, wenn eine Operation sonst scheitert?\n", + "\n", + "Nun kommt dein Logger auch zum Zug:\n", + "* ersetze die `print`s durch deine `log`s.\n", + "* Verwende das `log` in deinem Exception Handling: Wenn etwas scheitert, logge es!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 4 - Zahlenratespiel\n", + "Erweitere dein Zahlenratespiel aus Aufgabe 5 in \"02_control_structures.ipynb\" mit einem sinnvollen Exception Handling." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 56ac9422dd59313a8f952f80634ecd909035a956 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 27 Mar 2023 09:43:05 +0200 Subject: [PATCH 28/70] cleared outputs --- docs/01_basics/000Hello.ipynb | 12 +- docs/01_basics/010Variablen.ipynb | 16 +-- docs/01_basics/011_Typen.ipynb | 105 ++++-------------- docs/01_basics/015Strings.ipynb | 26 +---- docs/02_control_structures/050Loops.ipynb | 28 +---- docs/03_collections/020Lists.ipynb | 22 +--- .../022_Listen_Komprehensionen.ipynb | 14 +-- docs/03_collections/025Sets.ipynb | 47 +------- docs/03_collections/027Tuples.ipynb | 14 +-- docs/03_collections/080Dictionaries.ipynb | 51 ++------- .../041_exception_handling.ipynb | 39 +------ .../02_control_structures.ipynb | 2 +- labs/03_collections/03_collections.ipynb | 21 ++-- 13 files changed, 70 insertions(+), 327 deletions(-) diff --git a/docs/01_basics/000Hello.ipynb b/docs/01_basics/000Hello.ipynb index 3062f05..42988c0 100644 --- a/docs/01_basics/000Hello.ipynb +++ b/docs/01_basics/000Hello.ipynb @@ -64,17 +64,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello Hans-Ruedi, nice to see you!\n" - ] - } - ], + "outputs": [], "source": [ "import getpass\n", "\n", diff --git a/docs/01_basics/010Variablen.ipynb b/docs/01_basics/010Variablen.ipynb index 527d4e1..41fa8ed 100644 --- a/docs/01_basics/010Variablen.ipynb +++ b/docs/01_basics/010Variablen.ipynb @@ -22,21 +22,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "7\n", - "7.0\n", - "7.0\n", - "3\n", - "hello world\n" - ] - } - ], + "outputs": [], "source": [ "MY_INT_CONSTANT = 7\n", "print(MY_INT_CONSTANT) # Output: 7\n", diff --git a/docs/01_basics/011_Typen.ipynb b/docs/01_basics/011_Typen.ipynb index da0a9b5..a2b6121 100644 --- a/docs/01_basics/011_Typen.ipynb +++ b/docs/01_basics/011_Typen.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -38,17 +38,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n" - ] - } - ], + "outputs": [], "source": [ "zahl3 = zahl1 + zahl2\n", "print(zahl3) # Output: 3" @@ -118,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -145,7 +137,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -163,17 +155,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "hello world\n" - ] - } - ], + "outputs": [], "source": [ "hello_world = hello + \" \" + world\n", "print(hello_world) # Output: hello world" @@ -211,17 +195,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "my_number is 1 and my_string is \"hello\"\n" - ] - } - ], + "outputs": [], "source": [ "my_number = 1\n", "my_string = \"hello\"\n", @@ -240,17 +216,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "my_number is \"1\" and my_string is \"hello\"\n" - ] - } - ], + "outputs": [], "source": [ "print('my_number is \"' + str(my_number) + '\" and my_string is \"' + str(my_string) + '\"')" ] @@ -265,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -290,17 +258,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True False False True\n" - ] - } - ], + "outputs": [], "source": [ "bool1 = True\n", "bool2 = False\n", @@ -321,17 +281,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "There we go!\n" - ] - } - ], + "outputs": [], "source": [ "if (bool1):\n", " print(\"There we go!\")" @@ -365,17 +317,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "False True\n" - ] - } - ], + "outputs": [], "source": [ "bool5 = bool(0)\n", "bool6 = bool(1)\n", @@ -399,18 +343,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "100 4 7.0 42\n", - " \n" - ] - } - ], + "outputs": [], "source": [ "a = str(100) # a = '100'\n", "b = int(4.2) # b = 4\n", diff --git a/docs/01_basics/015Strings.ipynb b/docs/01_basics/015Strings.ipynb index fb626d7..9df7e62 100644 --- a/docs/01_basics/015Strings.ipynb +++ b/docs/01_basics/015Strings.ipynb @@ -184,18 +184,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello, it's me.\n", - "Hello from the other side\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Hello, it's me.\\nHello from the other side\")" ] @@ -212,18 +203,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "name \t age \t weight\n", - "Mario \t 1 \t 500\n" - ] - } - ], + "outputs": [], "source": [ "print(\"name \\t age \\t weight\")\n", "print(\"Mario \\t 1 \\t 500\")" diff --git a/docs/02_control_structures/050Loops.ipynb b/docs/02_control_structures/050Loops.ipynb index afa74f8..d87ed31 100644 --- a/docs/02_control_structures/050Loops.ipynb +++ b/docs/02_control_structures/050Loops.ipynb @@ -46,19 +46,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n" - ] - } - ], + "outputs": [], "source": [ "i = 0\n", "while i < 3:\n", @@ -78,19 +68,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "3\n", - "4\n" - ] - } - ], + "outputs": [], "source": [ "i = 0\n", "while True:\n", diff --git a/docs/03_collections/020Lists.ipynb b/docs/03_collections/020Lists.ipynb index 636213a..f9e4fb1 100644 --- a/docs/03_collections/020Lists.ipynb +++ b/docs/03_collections/020Lists.ipynb @@ -87,27 +87,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "31\n", - "5007\n", - "19\n" - ] - }, - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." - ] - } - ], + "outputs": [], "source": [ "numbers = [31, 5007, 19]\n", "x, y, z = numbers\n", diff --git a/docs/03_collections/022_Listen_Komprehensionen.ipynb b/docs/03_collections/022_Listen_Komprehensionen.ipynb index 28c085c..8f461aa 100644 --- a/docs/03_collections/022_Listen_Komprehensionen.ipynb +++ b/docs/03_collections/022_Listen_Komprehensionen.ipynb @@ -25,19 +25,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", - "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", - "[('Apfel', 5), ('Banane', 6), ('Kirsche', 7)]\n" - ] - } - ], + "outputs": [], "source": [ "# Quadrate von Zahlen von 1 bis 10\n", "quadrat = [i ** 2 for i in range(1, 11)]\n", diff --git a/docs/03_collections/025Sets.ipynb b/docs/03_collections/025Sets.ipynb index ada22ca..14acf52 100644 --- a/docs/03_collections/025Sets.ipynb +++ b/docs/03_collections/025Sets.ipynb @@ -15,21 +15,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "set()\n", - "{'orange', 'banana', 'apple'}\n", - "{1, 2, 3, 4}\n", - "{'blue', 'green', 'red'}\n", - "{False, True, 2, 3, 'hello'}\n" - ] - } - ], + "outputs": [], "source": [ "# Creating an empty set\n", "empty_set = set()\n", @@ -66,18 +54,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "All values in the list: {1, 2, 3, 4, 5, 99}\n", - "The list contains 6 different values.\n" - ] - } - ], + "outputs": [], "source": [ "my_list = [1,2,3,4,5,1,1,4,3,99]\n", "\n", @@ -98,23 +77,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'apple', 'banana', 'grape', 'orange'}\n", - "{'apple', 'grape', 'orange'}\n", - "True\n", - "3\n", - "apple\n", - "grape\n", - "orange\n" - ] - } - ], + "outputs": [], "source": [ "fruits = {\"apple\", \"banana\", \"orange\"}\n", "\n", diff --git a/docs/03_collections/027Tuples.ipynb b/docs/03_collections/027Tuples.ipynb index f9aab36..a09370e 100644 --- a/docs/03_collections/027Tuples.ipynb +++ b/docs/03_collections/027Tuples.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -57,17 +57,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1, 2, 4)\n" - ] - } - ], + "outputs": [], "source": [ "my_tuple = (1, 2, 3)\n", "new_tuple = my_tuple[:2] + (4,) # Erstellt ein neues Tupel mit den ersten beiden Werten von my_tuple und dem Wert 4.\n", diff --git a/docs/03_collections/080Dictionaries.ipynb b/docs/03_collections/080Dictionaries.ipynb index ac3ba3b..b5254a1 100644 --- a/docs/03_collections/080Dictionaries.ipynb +++ b/docs/03_collections/080Dictionaries.ipynb @@ -101,20 +101,9 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'name': 'Colonel Toad', 'firstShared': '2011-08-01', 'origin': 'Pinterest'}" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import json\n", "\n", @@ -136,20 +125,9 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'{\"a\": 3, \"b\": \"Hello\"}'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import json\n", "\n", @@ -190,20 +168,9 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 1, 'b': 2}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "my_dict: dict[str, int] = json.loads('{\"a\": 1, \"b\": 2}')\n", "my_dict" diff --git a/docs/04_resource_management/041_exception_handling.ipynb b/docs/04_resource_management/041_exception_handling.ipynb index 609abfd..e851a2f 100644 --- a/docs/04_resource_management/041_exception_handling.ipynb +++ b/docs/04_resource_management/041_exception_handling.ipynb @@ -17,19 +17,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "100 / 2 = 50.0\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "try:\n", " number = int(input(\"Please give a number: \"))\n", @@ -68,17 +58,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "100 / 3 = 33.333333333333336\n" - ] - } - ], + "outputs": [], "source": [ "try:\n", " number = int(input(\"Please give a number: \"))\n", @@ -114,18 +96,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The operation succeeded. The result: 33.333333333333336\n", - "Now, let's go into vacations :)\n" - ] - } - ], + "outputs": [], "source": [ "try:\n", " number = int(input(\"Please give a number: \"))\n", diff --git a/labs/02_control_structures/02_control_structures.ipynb b/labs/02_control_structures/02_control_structures.ipynb index 9018931..e894d39 100644 --- a/labs/02_control_structures/02_control_structures.ipynb +++ b/labs/02_control_structures/02_control_structures.ipynb @@ -102,7 +102,7 @@ "\n", "* Summen von 2 Zahlen berechnen.\n", "* Kleinstes gemeinsames Vielfaches (kgV) von zwei Zahlen Berechnen\n", - "* Löse für gegebene `a`, `b` und `c` die Gleichung $ax^2+bx+c=0$. Hierfür kannst du die \"Mitternachtsformel\" brauchen. Denke daran, dass es zwei Lösungen geben kann. Verwende also einen sinnvollen Rückgabe-Typ. (Das Programm muss nur Lösungen zurückgeben, wenn es reelle Lösungen (also keine komplexen) gibt.)\n" + "* Löse für gegebene `a`, `b` und `c` die Gleichung $ax^2+bx+c=0$. Hierfür kannst du die \"Mitternachtsformel\" brauchen. Denke daran, dass es zwei Lösungen geben kann. Verwende also einen sinnvollen Rückgabe-Typ. (Das Programm muss nur Lösungen zurückgeben, wenn es reelle Lösungen (also keine komplexen) gibt.). Denke daran am Schluss zu überprüfen, ob deine Lösung stimmt (mit Code automatisch).\n" ] }, { diff --git a/labs/03_collections/03_collections.ipynb b/labs/03_collections/03_collections.ipynb index 8c76616..881e4d2 100644 --- a/labs/03_collections/03_collections.ipynb +++ b/labs/03_collections/03_collections.ipynb @@ -45,18 +45,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "13\n", - "42\n" - ] - } - ], + "outputs": [], "source": [ "def calculate(a: float, b: float, operator):\n", " return operator(a, b)\n", @@ -80,8 +71,14 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "name": "python", + "version": "3.10.10" }, "orig_nbformat": 4 }, From 20e24eab1001e62fd8966cc96514264cc237e43a Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 27 Mar 2023 14:42:39 +0200 Subject: [PATCH 29/70] regex --- docs/05_advanced_techniques/05_1_regex.ipynb | 242 +++++++++++++++++++ labs/05_advanced_techniques/05_1_regex.ipynb | 190 +++++++++++++++ 2 files changed, 432 insertions(+) create mode 100644 docs/05_advanced_techniques/05_1_regex.ipynb create mode 100644 labs/05_advanced_techniques/05_1_regex.ipynb diff --git a/docs/05_advanced_techniques/05_1_regex.ipynb b/docs/05_advanced_techniques/05_1_regex.ipynb new file mode 100644 index 0000000..39073a9 --- /dev/null +++ b/docs/05_advanced_techniques/05_1_regex.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# RegEx\n", + "\n", + "Als Entwickler:in wirst du eines Tages viel Informationen aus einem strukturierten Text herauslesen müssen oder einen Input gem. Schema validieren (sprich: überprüfen) müssen.\n", + "\n", + "Möchtest du z.B. vor dem Abschicken eines Web-Formulars überprüfen, ob eine Eingabe eine gültige Email-Adresse ist, dann kannst du hier auch RegEx brauchen. Bei einer Email-Adresse weisst du, dass diese aus einem Teil vor einem \"@\", und einem Teil danach, der wiederum mindestens einen Punkt besitzen muss, besteht. Diese Regel kannst du in einer RegEx (Regular Expression, deutsch: regulärer Ausdruck) beschreiben:\n", + "\n", + "```regex\n", + "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\n", + "```\n", + "\n", + "In diesem Beispiel hast du\n", + "* vor dem \"@\" Buchstaben, Zahlen sowie \".\", \"_\", \"+\" und \"-\" erlaubt\n", + "* Nach dem \"@\" Müssen Buchstaben, Zahlen, Punkte oder Bindestriche folgen\n", + "* und die Email muss mit einem Punkt und dann mindestens 2 Buchstaben enden.\n", + "\n", + "Eine Regex kannst du unter folgenden Links prüfen:\n", + "* https://regex101.com/: Sehr bekannt und praktisch für RegEx.\n", + "* https://pythex.org/: Optimiert für die Verwendung unter Python.\n", + "\n", + "Aufgabe: Prüfe ein paar Email-Adressen, ob diese Valid sind.\n", + "\n", + "Die obengenannte RegEx für Email-Adressen ist bei weitem nicht vollständig. Eine richtig funktionierende und vollständige RegEx für Email-Adresse ist viel komplexer." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Einfache RegEx erstellen\n", + "Beginnen wir mit einem einfacheren Beispiel. Sagen wir, wir haben einen Text wie:\n", + "\n", + "```text\n", + "destroy_world: True\n", + "```\n", + "\n", + "Nun wollen wir herausfinden, ob nach `destroy_world` True steht, damit unser Programm entsprechend handeln kann.\n", + "\n", + "Beginnen wir mit einem sehr einfachen Vorgehen: Wir prüfen nur, ob `True` vorkommt:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re # re wird gebraucht für Regex.\n", + "\n", + "text = \"destroy_world: True\"\n", + "pattern = r\"True\"\n", + "\n", + "result = re.search(pattern, text)\n", + "if result is not None:\n", + " print(\"Sure. Your wish is my command :D\")\n", + " print(\"The variable was set to\", result.group())\n", + "else:\n", + " print(\"So then, I don't do anything.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im obigen Beispiel haben wir nur geprüft, ob der Wert `True` vorhanden ist. Wenn wir nun einen Schritt weitergehen und auch `False` finden möchten, dann könnten wir das wie folgt erweitern:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "text = \"destroy_world: True\"\n", + "pattern = r\"True|False\"\n", + "\n", + "result = re.search(pattern, text)\n", + "if result is not None:\n", + " print(\"The variable was set to\", result.group())" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier haben wir nun gesehen, dass wir eine Oder-Beziehung reinbringen konnten: `pattern = r\"True|False\"`.\n", + "\n", + "Ein `|` fungiert in einer Regex wie ein \"Oder\".\n", + "\n", + "Gehen wir nun noch einen Schritt weiter und erwarten nicht einen Boolean sondern einen Namen, dann könnten wir so vorgehen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re # re wird gebraucht für Regex.\n", + "\n", + "text = \"destroy_world: Earth\"\n", + "pattern = r\": [a-zA-Z]+\"\n", + "\n", + "result = re.search(pattern, text)\n", + "if result is not None:\n", + " print(f\"The variable was set to '{result.group()[2:]}'\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel hatten wir die Regex `: [a-zA-Z]+`.\n", + "* Diese beschreibt, dass das Gesuchte mit \": \" beginnt.\n", + "* Anschliessend kommt ein Zeichen, das ein (klein) Buchstaben zwischen a und z oder ein Grossbuchstabe zwischen A und Z.\n", + " * Solche Ranges werden in eckige Klammern gepackt.\n", + "* Mit dem `+` wurde spezifiziert, dass das in den eckigen Klammern **mindestens 1 mal** vorkommt.\n", + "* Mit dem `[2:]` haben wir ein bisschen gebastelt: Wir wollen das \": \" im Resultat loswerden und schneiden das Resultat so zu, dass es erst beim 3. Zeichen beginnt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gruppen\n", + "Sehr oft suchen wir nach bestimmten Wörtern/Zahlen in einem bestimmten Umfeld/Kontext.\n", + "\n", + "Angenommen wir haben einen Text wie\n", + "```yaml\n", + "app_name: PacMan\n", + "version: 1.0.1\n", + "app_image: C:\\Users\\PacMan\\Documents\\pacman.png\n", + "```\n", + "\n", + "Mit Hilfe von \"Named Groups\" können wir den Werten in der Regex einen Namen geben. Das hat den Vorteil, dass wir im Prinzip den erwarteten Text schreiben können und die spezifischen Werte via ihren Namen ausschneiden können:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "text = \"\"\"app_name: PacMan\n", + "version: 1.0.1\n", + "app_image: C:\\\\Users\\\\PacMan\\\\Documents\\\\pacman.png\"\"\"\n", + "\n", + "# RegEx pattern that matches for all variable names.\n", + "pattern = r\"app_name:\\s*(?P[a-zA-Z0-9]+)\\nversion:\\s*(?P\\d+\\.\\d+\\.\\d+)\\napp_image:\\s*(?P.+)\"\n", + "\n", + "match = re.search(pattern, text)\n", + "\n", + "# Extract the values\n", + "app_name = match.group(\"app_name\")\n", + "version = match.group(\"version\")\n", + "app_image = match.group(\"app_image\")\n", + "\n", + "print(app_name, version, app_image)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit einem Konstrukt wie `(?P\\[a-zA-Z0-9]+)` haben wir eine solche Named Group erstellt. Der Teil `?P` definiert den Namen der Named Group (hier \"app_name\"), `[a-zA-Z0-9]+` ist die Regex für den Wert der Named Group \"app_name\", und die Klammern sind zur besseren Abgrenzung da.\n", + "\n", + "Wenn du dich noch fragst, was das `?P` soll: Das `P` steht für Python und das ist eine Regex, die für Python's Regex-System funktioniert. In anderen Programmiersprache wirst du eine andere Syntax dafür verwenden." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Spezielle Sequenzen\n", + "Du hast bereits erfahren, dass du mit einer Regex wie `[a-zA-Z0-9]` alle englischen Buchstaben (also keine ÄÖÜ) inkl. Zahlen und Unterstrich einschliessen kannst.\n", + "\n", + "Für genau solche oft vorkommenden Regeln gibt es Abkürzungen.\n", + "* Statt `[a-zA-Z0-9]` kannst du auch einfach `\\w` verwenden.\n", + "* Statt \" \" kannst du auch `\\s` verwenden, der jeden Whitespace(\" \", \\t, \\n, \\r, \\f, \\v) mit einschliesst.\n", + "* Für Zahlen kannst du `\\d` (wie \"digit\") verwenden.\n", + "\n", + "## Mengenangaben\n", + "Oft musst du angeben, wie viel mal ein bestimmtes Zeichen vorkommt. Das hast du z.B. bei dieser Regel getan: `[a-zA-Z0-9]+`\n", + "Mit dem `+` hast du angegeben, dass **mindestens ein** solches Zeichen vorkommen muss. Andere Mengenangaben sind:\n", + "* `*`: 0, 1 oder mehrere Vorkommnisse.\n", + "* `?`: 0 oder 1 mal.\n", + "* `{n}`: Genau n-mal.\n", + "* `{m, n}`: Mindestens m-mal, maximal n-mal.\n", + "* `{m,}`: Mindestens m-mal.\n", + "* `{,n}`: Maximal n-mal.\n", + "\n", + "## Spezielle Charakter (Zeichen)\n", + "Sehr oft siehst du eine Regex in diesem Format: `^irgend eine RegEx$`. Oft wird erwartet, dass der ganze String (also Text) genau einer RegEx entspricht und nicht nur ein Teil von ihm. Das `^` steht für den Anfang, das `$` für das Ende dex Textes (bzw. der Zeile, ja nach Kontext).\n", + "\n", + "Sehr oft kommt es vor, dass du ein bestimmtes Zeichen wie z.B. den Punkt `.` als Zeichen erwartest. Generell können Sonderzeichen mit einem `\\` \"escaped\" werden.\n", + "\n", + "Apropos Punkt `.`: Dieser steht für irgendein Zeichen.\n", + "\n", + "Weitere Informationen findest du hier, wenn du das Cheatsheet aufklappst: https://pythex.org/." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/labs/05_advanced_techniques/05_1_regex.ipynb b/labs/05_advanced_techniques/05_1_regex.ipynb new file mode 100644 index 0000000..c1039b7 --- /dev/null +++ b/labs/05_advanced_techniques/05_1_regex.ipynb @@ -0,0 +1,190 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgaben zu RegEx" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Input-Validation" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Email-Adresse\n", + "Erstelle eine Regex, die verschiedene Email-Adressen validiert – auch deine und solche mit Zahlen, Bindestriche und Underscores.\n", + "\n", + "Prüfe deine Regex und Methode auf folgende Email-Adressen:\n", + "* ✔ andy.arbeit@sbb.ch\n", + "* ✔ andy.arbeit+spam@gmail.com\n", + "* ✔ andy.arbeit+spam@gmail+.com\n", + "* ❌ andy.arbeit@sbb+.ch\n", + "* ❌ andy.arbeit@ch\n", + "* ❌ andy.arbeit\n", + "\n", + "Welche Regex verwendet der Chrome-Browser (Gehe auf die Suche)?" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Telefon-Nummer\n", + "Erstelle eine RegEx, die korrekte Schweizer Telefonnummern erkennt. Folgende Formate sollten u.a. erkannt werden:\n", + "* 079 123 45 67\n", + "* +41 79 123 45 67\n", + "* 0041 79 123 45 67\n", + "* (0041) 79 123 45 67" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 URL\n", + "Erstelle eine RegEx, die URLs erkennt wie:\n", + "* ✔ https://labs.it-ninjas.ch/gugus\n", + "* ✔ https://labs.it-ninjas.ch:443/gugus\n", + "* ✔ https://labs.it-ninjas.ch?gugus\n", + "* ❌ https://labs.it-ninjas.ch?/gugus\n", + "* ❌ https://labs.it-ninjas.ch/gugus gugus" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 IP-Adressen\n", + "Erstelle eine RegEx, die sowohl IPv4- wie auch IPv6-Adressen erkennt. Mögliche Beispiele:\n", + "* ✔ 192.168.1.12\n", + "* ✔ 127.0.0.1\n", + "* ✔ 10.0.0.1\n", + "* ✔ 1200:0000:AB00:1234:0000:2552:7777:1313\n", + "* ❌ 1200::AB00:1234::2552:7777:1313\n", + "* ✔ 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A\n", + "* ✔ FE80:0000:0000:0000:0202:B3FF:FE1E:8329\n", + "\n", + "Sollen IPv6-Adressen für dich neu sein, dann recherchiere diese kurz im Netz. Sollten Fragen offen bleiben, dann frage bitte kurz nach." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.5 Datum\n", + "Erstelle eine RegEx, die im Stande ist zu entscheiden, ob ein Datum korrekt geschrieben ist.\n", + "\n", + "Gehe davon aus, dass das Datum immer «`. `» in Deutsch (voll ausgeschrieben) ist, z.B.\n", + "* 24. Dezember 2003\n", + "* 22. Februar 2022" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.6 Passwort-Stärke (optional)\n", + "Was ist für dich ein starkes Passwort? Vielleicht mindestens 8 Zeichen lang, und muss mindestens 1 Zeichen, Gross- und Kleinbuchstaben sowie ein spezielles Zeichen (wie ‘!’) enthalten?\n", + "\n", + "Entscheide für dich selbst.\n", + "\n", + "Erstelle nun eine RegEx, die ein starkes Passwort erkennt. Hierfür musst du dich wahrscheinlich über \"lookahead assertion\" schlau machen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Text ausschneiden" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1 Config-Datei interpretieren\n", + "Lies folgende Informationen ein. Die ersten beiden Zeilen sind generelle Konfigurationen, die nur einmal vorkommen. Nach dem `-` folgen Listenelemente\n", + "\n", + "```yaml\n", + "cluster_name: The Lost City\n", + "ip_address: null\n", + "server_addresses:\n", + " - server_name: Poseidon\n", + " status: up\n", + " ip_address: 192.168.0.1\n", + " - server_name: Neptune\n", + " status: down\n", + " ip_address: 192.168.0.2\n", + " - server_name: Triton\n", + " status: up\n", + " ip_address: 192.168.0.3\n", + " - server_name: Nereus\n", + " status: up\n", + " ip_address: 192.168.0.4\n", + "```\n", + "\n", + "Schreibe ein Programm, welches mit Hilfe von Regex und Named Groups den `cluster_name` sowie alle `server_name`s und `ip_address`es von denjenigen Servern zurückgibt, die den `status: up` haben." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Python-Code einlesen\n", + "Schreibe ein kleines Programm, dass die Deklaration einer Python-Funktion interpretieren kann:\n", + "\n", + "```python\n", + "def my_function(argument1, argument2: int, argument3: dict[int, str]) -> bool:\n", + "```\n", + "\n", + "Dein Programm soll den interpretierten Python-Code in Form eines Dictionaries zurückgeben (wobei `[...]` einer Liste und `null` dem Wert `None` entspricht):\n", + "```json\n", + "{\n", + " \"function_name\": \"my_function\",\n", + " \"arguments\": [\n", + " {\n", + " \"name\": \"argument1\",\n", + " \"type\": null\n", + " },\n", + " {\n", + " \"name\": \"argument2\",\n", + " \"type\": \"int\"\n", + " },\n", + " {\n", + " \"name\": \"argument3\",\n", + " \"type\": \"dict[int, str]\"\n", + " }\n", + " ],\n", + " \"return_value\": \"bool\"\n", + "}\n", + "```" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 3088dacd7b9df6b3fa0d400929df850020b54bee Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 28 Mar 2023 13:44:11 +0200 Subject: [PATCH 30/70] turtles --- .../05_advanced_techniques/05_2_turtles.ipynb | 169 ++++++++++++++++++ .../05_advanced_techniques/05_2_turtles.ipynb | 107 +++++++++++ 2 files changed, 276 insertions(+) create mode 100644 docs/05_advanced_techniques/05_2_turtles.ipynb create mode 100644 labs/05_advanced_techniques/05_2_turtles.ipynb diff --git a/docs/05_advanced_techniques/05_2_turtles.ipynb b/docs/05_advanced_techniques/05_2_turtles.ipynb new file mode 100644 index 0000000..a1b1687 --- /dev/null +++ b/docs/05_advanced_techniques/05_2_turtles.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Turtles" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pythons `turtle`-Modul bietet Tools an, mit denen man interaktiv visuelle Formen auf einem Fenster zeichnen kann.\n", + "\n", + "Mit sogenannten Turtles kannst du auf eine einfache Art und Weise etwas visuelles aufsetzen wie z.B. ein kleines Spiel. Hierbei wird eine sogenannte Turtle - also Schildkröte - via Code gesteuert und hinterlässt eine Farbspur, die auf dem Bildschirm bleibt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Basics\n", + "\n", + "Um die Turtles brauchen zu können, musst du ein Objekt von der Klasse `Turtle` instanziieren (was automatisch ein Canvas/Fenster öffnet):" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from turtle import Turtle\n", + "\n", + "turtle1 = Turtle()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Anschliessend kannst du der Turtle sagen, wo es lang geht:\n", + "* mit `forward(pixel)` um `pixel` vorwärts bewegen.\n", + "* mit `backward(pixel)` um `pixel` rückwärts bewegen.\n", + "* mit `left(degrees)` um `degrees` nach links rotieren.\n", + "* mit `right(degrees)` um `degrees` nach rechts rotieren.\n", + "\n", + "Siehe dieses Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "turtle1.forward(100)\n", + "turtle1.left(90)\n", + "turtle1.forward(100)\n", + "turtle1.left(90)\n", + "turtle1.forward(100)\n", + "turtle1.left(90)\n", + "turtle1.forward(100)\n", + "turtle1.right(45)\n", + "turtle1.backward(141)\n", + "turtle1.right(135)\n", + "turtle1.backward(100)\n", + "turtle1.left(45)\n", + "turtle1.forward(141)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Um neu zu starten, kannst du ungefähr folgendes eingeben:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "turtle1.setpos(0, 0) # reset the position.\n", + "turtle1.setheading(0) # make the turtle look to the right\n", + "turtle1.clear() # clear the canvas." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ungefähr so kannst du auch die Farben und Stiftgrösse verändern:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "turtle1.pencolor(\"red\") # Set pen color to red\n", + "turtle1.pensize(5) # Set pen size to 5\n", + "turtle1.fillcolor(\"blue\") # Set fill color to blue\n", + "turtle1.begin_fill() # Start filling shape\n", + "turtle1.circle(50) # Draw a circle\n", + "turtle1.end_fill() # End filling shape" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Und du kannst auch ein kleineres Spiel realisieren.\n", + "\n", + "Du kannst z.B. auf Tastatur-Events reagieren (funktioniert aber nicht ohne Weiteres in Jupyter Notebooks):" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from turtle import listen, onkey\n", + "\n", + "\n", + "def turn_left(turtle1: Turtle):\n", + " print(\"left\")\n", + " turtle1.left(10)\n", + " turtle1.forward(100)\n", + "\n", + "onkey(lambda: turn_left(turtle1), \"Left\") # Call turn_left function when \"Left\" key is pressed\n", + "listen() # Start listening for events" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/labs/05_advanced_techniques/05_2_turtles.ipynb b/labs/05_advanced_techniques/05_2_turtles.ipynb new file mode 100644 index 0000000..46a25ff --- /dev/null +++ b/labs/05_advanced_techniques/05_2_turtles.ipynb @@ -0,0 +1,107 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aufgaben zu Turtles" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 1 - Zufällige Objekte\n", + "\n", + "Erstelle ein kleines Programm, das auf deine Tastatur \"hört\". Immer, wenn du eine bestimmte Taste klickst, wird irgendwo auf dem Bildschirm eine zufällige Form (Rechteck, Kreis, Strich) in einer zufälligen Grösse gezeichnet." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 2 - Das Haus von Nikolaus\n", + "\n", + "Zeichne mit Hilfe von Turtles das Haus von Nikolaus." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 3 - Vielecke\n", + "\n", + "Schreibe eine Methode, die als Parameter eine Zahl akzeptiert.\n", + "\n", + "Lasse dann automatisch eine Form mit so vielen Ecken zeichnen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 4 - weitere Formen\n", + "\n", + "Zeichne weitere Formen:\n", + "* einen Stern\n", + "* eine Spirale" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 5 - Labyrinth (Irrgarten)\n", + "\n", + "Zeichne einen Irrgarten.\n", + "\n", + "Mache nun ein Spiel daraus: du kannst die Turtle mit den Maustasten steuern. Wenn die Turtle dem Irrgarten ankommt, beginnt das Spiel von vorne.\n", + "\n", + "Denke daran, dass am Ende eine Gratulation angezeigt wird, wenn der Spieler erfolgreich war.\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aufgabe 6 - eigenes Spiel\n", + "\n", + "Entwickle deine eigene Idee wie z.B. ein kleines Pong oder Flappy Bird." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 10f28c753ef1025f8b822c3d3c1930a61cd67104 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Thu, 30 Mar 2023 10:57:53 +0200 Subject: [PATCH 31/70] popen task --- .../05_3_external_programs.ipynb | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 labs/05_advanced_techniques/05_3_external_programs.ipynb diff --git a/labs/05_advanced_techniques/05_3_external_programs.ipynb b/labs/05_advanced_techniques/05_3_external_programs.ipynb new file mode 100644 index 0000000..ccd706a --- /dev/null +++ b/labs/05_advanced_techniques/05_3_external_programs.ipynb @@ -0,0 +1,97 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mit externen Programmen kommunizieren" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1 Process Open (`popen(...)`)\n", + "Bei diesen Aufgabe wirst du das Ausführen von Command-Line-Befehlen mit Hilfen von Process Open (`popen(...)`) trainieren." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aufgabe 1.1 - Im Dateiverzeichnis navigieren\n", + "\n", + "\n", + "In dieser Aufgabe sollst du die bekanntesten Command-Line-Befehlen (unter Windows) kennenlernen. Diese sind:\n", + "* `dir` (Windows) oder `ls` (Linux/Mac/Windows PowerShell Alias auf `dir`)\n", + "* `cd`\n", + "* `mkdir`\n", + "* `rename`\n", + "* `set`\n", + "* `echo Hello World > my-file.txt` -> Schreibt einen Text in eine Datei.\n", + "\n", + "Schreibe eine `.bat`-Datei, die\n", + "* das aktuelle Verzeichnis ausgibt,\n", + "* in das Verzeichnis \"./output\" wechselt,\n", + "* dort die System-Variable `Path` in die Datei `something.txt` schreibt,\n", + "* und diese Datei in `path.txt` umbenennt.\n", + "\n", + "Lasse diese `.bat`-Datei via Python ausführen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aufgabe 1.2 - Git Informationen auslesen\n", + "Schreibe ein Programm, das folgende Git-Informationen (über dasselbe Projekt) in der Konsole ausgibt:\n", + "- Auf welchem Branch arbeitest du gerade?\n", + "- Wie viele Commits wurdest du hochladen, falls du `git push` eingeben würdest?\n", + "- Was ist die URL zu deinem Remote Repository?\n", + "\n", + "Verwende dafür `popen(...)` und die Standard-Git-Befehle." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aufgabe 1.3 - Python-Script starten\n", + "Schreibe ein Programm, welches ein anderes Python-Script startet.\n", + "\n", + "Dein Programm soll nach jeder Zeile, die das Script ausgibt, folgenden Text vorne hinzufügen: \"The other says: \"." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aufgabe 1.4 - Task Manager\n", + "Schreibe ein Programm,\n", + "* welches einen Begriff (für ein laufendes Programm) einliest vom User,\n", + "* dann schaut, ob aktuell ein Prozess läuft, der einen Namen hat, der den Begriff enthält,\n", + "* den User fragt, ob er diesen Prozess beenden möchte,\n", + "* und anschliessend diesen Prozess beendet.\n", + "\n", + "**Hinweis**\n", + "Folgende Befehle könnten dir weiterhelfen:\n", + "* tasklist\n", + "* taskkill" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 494cc23a7fb14a54093c6d31281c745a0abbff5e Mon Sep 17 00:00:00 2001 From: "Renggli Tim (IT-PTR-CEN1-YPT2)" Date: Tue, 18 Apr 2023 10:01:13 +0200 Subject: [PATCH 32/70] test --- docs/TODO.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TODO.txt b/docs/TODO.txt index 3d437c6..5cd1747 100644 --- a/docs/TODO.txt +++ b/docs/TODO.txt @@ -3,4 +3,4 @@ # generators # regex # Turtle -# Lambdas \ No newline at end of file +# Lambdas From 681aeff316f1ad3f62e70d46704f379bcbcd18de Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:03:49 +0200 Subject: [PATCH 33/70] 000: idle and command --- docs/01_basics/000Hello.ipynb | 95 ++++++++++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 12 deletions(-) diff --git a/docs/01_basics/000Hello.ipynb b/docs/01_basics/000Hello.ipynb index 42988c0..a886009 100644 --- a/docs/01_basics/000Hello.ipynb +++ b/docs/01_basics/000Hello.ipynb @@ -64,9 +64,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello sam, nice to see you!\n" + ] + } + ], "source": [ "import getpass\n", "\n", @@ -94,7 +102,7 @@ "Die Formatierung wird mit bestimmten Zeichen realisiert. Versuche dies gerade aus:\n", "* Klicke unterhalb dieses Blockes auf \"+ Markdown\".\n", "* Gib einen Text ein, z.B. `Hello **World**, nice to see *you*.`.\n", - "* Klicke oben rechts bei der Zelle/beim Block auf das Gut-Zeichen oder klicke [Shift] + [Enter].\n", + "* Klicke oben rechts bei der Zelle/beim Block auf `▶️`-Symbol oder klicke [Shift] + [Enter].\n", "\n", "Nun sollte dein Text formatiert erscheinen.\n", "* Mit zwei Sternchen markierst du fetten Text: `**World**`\n", @@ -113,16 +121,24 @@ "### Erstes Beispiel\n", "Wir starten nun direkt mit dem Klassiker, dem Hello World Programm.\n", "\n", - "Führe folgenden Code aus, indem du auf den Play-Button neben der Code-Zelle klickst (\"Execute Cell\").\n", + "Führe folgenden Code aus, indem du auf den Play-Button links von der Code-Zelle klickst (\"Execute Cell\").\n", "\n", - "(Alternativ kannst du auch einfach in den Programm-Code klicken und [Ctrl]+[Alt]+[Enter] klicken.)" + "(Alternativ kannst du auch einfach in den Programm-Code klicken und `[Shift]+[Enter]` bzw. `[Ctrl]+[Alt]+[Enter]` für Debugging klicken.)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World!\n" + ] + } + ], "source": [ "print(\"Hello World!\") # Output: Hello World!" ] @@ -157,12 +173,13 @@ "outputs": [], "source": [ "if True:\n", - " print(\"x is 1.\")\n", + " print(\"Hallo :)\")\n", "\n", "while False:\n", " if True:\n", - " print(\"Hallo\")\n", + " print(\"Bonjour\")\n", " else:\n", + " print(\"Ciao\")\n", " break" ] }, @@ -185,17 +202,71 @@ "outputs": [], "source": [ "if (true) {\n", - " console.log(\"It's true\");\n", + " console.log(\"Hallo :)\");\n", "}\n", "\n", "while (false) {\n", " if (true) {\n", - " console.log(\"Hi\");\n", + " console.log(\"Bonjour\");\n", " } else {\n", + " console.log(\"Ciao\");\n", " break;\n", " }\n", "}" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Python-Code ausführen\n", + "\n", + "Es gibt verschiedene Arten, wie du Python-Code schnell testen kannst:\n", + "1. In einer Jupyter-Notebook-Code-Zelle (wie hier),\n", + "2. mit dem bei der Python-Installation dazu installierten IDLE,\n", + "3. und im Terminal mit dem `python`-, `python3`-, `python3.XX`- oder `py`-Befehl.\n", + "\n", + "Punkt 1 kennst du bereits schon. Deswegen wird dieser Punkt nicht weiter vertieft. Wenn du kein Jupyter-Notebook verwendest, sind die anderen beiden Optionen eine gute Alternative." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### IDLE\n", + "Wenn du Python von der [offiziellen Website](https://www.python.org/downloads/) herunterlädst, dann installierst du auch gleich das Programm \"IDLE\" mit.\n", + "\n", + "Dieses Programm kannst du einfach starten und dann sollte ein solches Fenster erscheinen:\n", + "\n", + "![asdf](../../ressources/images/docs/01_basics/idle_shell.png)\n", + "\n", + "Auf der letzten Zeile kannst du dann direkt Python-Code eingeben." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Python im Terminal\n", + "\n", + "Python kannst du mit mind. 1 dieser Befehle ausführen (abhängig von der Installation und des Betriebssystems):\n", + "* `python`\n", + "* `python3`\n", + "* `python3.XX`\n", + "* `py`\n", + "\n", + "![Python im Terminal](../../ressources/images/docs/01_basics/python_in_terminal.png)\n", + "\n", + "Mit dem Befehl kannst du natürlich auch ganze Dateien ausführen lassen:\n", + "```shellscript\n", + "python3.11 path/to/my_file.py\n", + "```\n", + "\n", + "Nachteil der Shell ist, dass du keine Vorschläge hast." + ] } ], "metadata": { @@ -214,7 +285,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, From 4659e9e6f3211b5d297661bdfea8d78091f8ea2c Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:04:22 +0200 Subject: [PATCH 34/70] renamed first chapter --- docs/01_basics/{000Hello.ipynb => 000Intro.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/01_basics/{000Hello.ipynb => 000Intro.ipynb} (100%) diff --git a/docs/01_basics/000Hello.ipynb b/docs/01_basics/000Intro.ipynb similarity index 100% rename from docs/01_basics/000Hello.ipynb rename to docs/01_basics/000Intro.ipynb From 24ee9c6fa4d81665afa19899c217011e6ba322a6 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:04:57 +0200 Subject: [PATCH 35/70] fixed comment in chapter strings --- docs/01_basics/015Strings.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/01_basics/015Strings.ipynb b/docs/01_basics/015Strings.ipynb index 9df7e62..be9412a 100644 --- a/docs/01_basics/015Strings.ipynb +++ b/docs/01_basics/015Strings.ipynb @@ -93,7 +93,7 @@ "\n", "# Herausschneiden zwischen dem ersten und zweiten Index.\n", "# Beachte, dass der Buchstabe mit dem 2. Index nicht inklusive ist.\n", - "print(beispiel[2:12]) # thon ist ei\n", + "print(beispiel[2:12]) # thon ist e\n", "print(beispiel[2:4]) # th\n", "\n", "# Herausschneiden der ersten Buchstaben\n", @@ -228,7 +228,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, From ae967827025f4488dc896a88326cc8929ff6e5c0 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:05:37 +0200 Subject: [PATCH 36/70] Set with unordered input --- docs/03_collections/025Sets.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/03_collections/025Sets.ipynb b/docs/03_collections/025Sets.ipynb index 14acf52..d383d67 100644 --- a/docs/03_collections/025Sets.ipynb +++ b/docs/03_collections/025Sets.ipynb @@ -118,7 +118,7 @@ "outputs": [], "source": [ "# Two sets of numbers\n", - "even_numbers = {2, 4, 6, 8, 10}\n", + "even_numbers = {98, 1034, 32, 2, 4, 6, 8, 10}\n", "odd_numbers = {1, 3, 5, 7, 9}\n", "\n", "# Union of two sets\n", @@ -163,7 +163,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, From 3a5679b8d99bb5b5e6b7abd0a73be09e4706e971 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:06:03 +0200 Subject: [PATCH 37/70] images for intro --- ressources/images/docs/01_basics/idle_shell.png | Bin 0 -> 86070 bytes .../docs/01_basics/python_in_terminal.png | Bin 0 -> 84759 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 ressources/images/docs/01_basics/idle_shell.png create mode 100644 ressources/images/docs/01_basics/python_in_terminal.png diff --git a/ressources/images/docs/01_basics/idle_shell.png b/ressources/images/docs/01_basics/idle_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..5a895b133f6b96b97786646c905c6d860c0b7a98 GIT binary patch literal 86070 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 DBLw0z literal 0 HcmV?d00001 diff --git a/ressources/images/docs/01_basics/python_in_terminal.png b/ressources/images/docs/01_basics/python_in_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..465246c6fb34e7ffea473e56110d50b8eab01100 GIT binary patch literal 84759 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%0D|W* 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 literal 0 HcmV?d00001 From 61aaf94cfc27ab6b527eaee2875f05428a448500 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:27:54 +0200 Subject: [PATCH 38/70] tuples: comparison with lists --- docs/03_collections/027Tuples.ipynb | 52 +++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/docs/03_collections/027Tuples.ipynb b/docs/03_collections/027Tuples.ipynb index a09370e..7c9a251 100644 --- a/docs/03_collections/027Tuples.ipynb +++ b/docs/03_collections/027Tuples.ipynb @@ -9,12 +9,43 @@ "\n", "Ein Tupel ist ein Datencontainer in Python, der dazu verwendet wird, eine Sammlung von Werten zu speichern. Ein Tupel kann mehrere Werte enthalten, die nicht geändert werden können. Das bedeutet, dass man den Inhalt des Tupels nicht nach der Erstellung ändern kann.\n", "\n", + "Tuples werden oft verwendet, wenn eine Funktion mehrere Rückgabewerte hat:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def get_names() -> tuple[str, str]:\n", + " return (\"first name\", \"last name\")\n", + "\n", + "first_name, last_name = get_names()\n", + "(first_name, last_name) = get_names()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im obigen Code gibt die Funktion einen Vor- und einen Nachnamen zurück.\n", + "\n", + "In den unteren beiden Zeilen werden die Werte gleich in entsprechende Variablen kopiert. Beide Schreibweisen machen das Gleiche." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ "Man kann ein Tupel in Python mit runden Klammern erstellen. Hier sind einige Beispiele für Tupel:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -105,6 +136,23 @@ "my_tuple = (1, 2, 3, 4)\n", "print(len(my_tuple)) # Gibt 4 aus" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tuples vs. Lists\n", + "\n", + "Wir haben gesehen, dass Tuples den Listen sehr ähneln. Wann sollen wir welchen Typ verwenden?\n", + "\n", + "| | Listen | Tuples |\n", + "| -- | --- | --- |\n", + "| Verwendung | In Listen werden oft sehr unterschiedlich viele Elemente gespeichert. | Tuples werden oft gebraucht, wenn eine Funktion mehrere Werte zurück gibt. Einzelne Variablen werden dann meistens aus dem Tuple in neue Variablen entpackt. | \n", + "| Immutable Data | Listen sind veränderbar. | Tuples sind unveränderbar, es können keine Elemente ausgetauscht, hinzugefügt oder gelöscht werden.|\n", + "| Datentypen | Bei Listen geht man oft davon aus, dass alle Elemente einen gemeinsamen Typ haben (ist aber keine Pflicht). | Die einzelnen Elemente in Tuples haben oft verschiedene Typen. |\n", + "| Performance | Wenig höherer Memory-Bedarf | Brauchen weniger Memory und weisen bei sehr grossen Datensätzen eine bisschen bessere Performance auf. |" + ] } ], "metadata": { @@ -123,7 +171,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.6" }, "orig_nbformat": 4 }, From 9c6a7454f99403e0661d527ab2f11f18506cfb4e Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 14:59:29 +0200 Subject: [PATCH 39/70] restructured dictionaries --- docs/03_collections/080Dictionaries.ipynb | 195 +++++++++++++++++++--- 1 file changed, 168 insertions(+), 27 deletions(-) diff --git a/docs/03_collections/080Dictionaries.ipynb b/docs/03_collections/080Dictionaries.ipynb index b5254a1..3e143cb 100644 --- a/docs/03_collections/080Dictionaries.ipynb +++ b/docs/03_collections/080Dictionaries.ipynb @@ -6,8 +6,8 @@ "metadata": {}, "source": [ "# Dictionaries\n", - "Dictionaries funktionieren ähnlich wie Arrays (bzw. Listen). Der Zugriff auf den Inhalt erfolgt aber mit Schlüsseln (sogenannte Keys) und nicht mit Indexen.\n", - "Im Folgenden Beispiel wird ein Dictionary mit Email-Adressen von Personen erstellt." + "Im Folgenden Beispiel erstellen wir eine Zuweisung von Namen zu Email-Adressen mithilfe eines Dictionarys.\n", + "Dieses Dictionary soll speichern, welche Person welche Email-Adresse besitzt: " ] }, { @@ -16,16 +16,72 @@ "metadata": {}, "outputs": [], "source": [ - "email_database = {} # initialize empty dictionary\n", + "email_database = {\n", + " \"John\": \"John.Guildmore@gmail.com\",\n", + " \"Jack\": \"jack_reacher@hotmail.com\"\n", + "}" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchten wir herausfinden, welche Person welche Email-Adresse besitzt, dann können wir das so tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "email = email_database[\"John\"]\n", + "email" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In den eckigen Klammern haben wir einen \"Key\" angegeben.\n", "\n", - "# add a new entry with key \"John\" and value \"John.Guildmore@gmail.com\"\n", - "email_database[\"John\"] = \"John.Guildmore@gmail.com\"\n", + "Durch die Angabe des Keys in eckigen Klammern beim Dictionary erhalten wir den dazugehörigen Wert (\"Value\") zurück.\n", "\n", + "Im Gegensatz zu Listen, Sets und Tuples erfolgt die Abfrage mit Keys anstelle von Indexen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Inhalte von Dictionarys müssen nicht von Beginn an bekannt sein, sondern können nachträglich ergänzt werden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "email_database = {} # leeres Dictionary\n", + "\n", + "# Werte hinzufügen:\n", + "email_database[\"John\"] = \"John.Guildmore@gmail.com\"\n", "email_database[\"Jack\"] = \"jack_reacher@hotmail.com\"\n", "\n", "print(email_database[\"John\"]) # John.Guildmore@gmail.com\n", - "print(email_database)\n", - "# {'John': 'John.Guildmore@gmail.com', 'Jack': 'jack_reacher@hotmail.com'}" + "email_database" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operationen auf Dictionaries" ] }, { @@ -33,7 +89,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Natürlich kann man dasselbe Dictionary auch direkt befüllt initialisieren:" + "Das sind die wichtigsten Operationen auf Dictionaries:" ] }, { @@ -42,10 +98,11 @@ "metadata": {}, "outputs": [], "source": [ - "email_database = {\n", - " \"John\": \"John.Guildmore@gmail.com\",\n", - " \"Jack\": \"jack_reacher@hotmail.com\"\n", - "}" + "dict_name = {} # Leeres Dictionary erzeugen.\n", + "\n", + "dict_name[\"key\"] = \"value\" # Einfügen bzw. ändern eines Elements.\n", + "variable = dict_name[\"key\"] # Eintrag lesen. Wirft einen Fehler, wenn der Eintrag nicht vorhanden ist.\n", + "dict_name.pop(\"key\") # Eintrag löschen." ] }, { @@ -53,7 +110,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Einige wichtige Operationen mit Dictionaries sind:" + "Auf der letzten Zeile haben wir den Eintrag mit dem Key \"key\" und den dazugehörigen Wert gelöscht.\n", + "\n", + "Möchten wir trotzdem den Wert für diesen Key abfragen, ohne dass ein Fehler geworfen wir, dann können wir das mit `.get(key)` tun:" ] }, { @@ -62,20 +121,102 @@ "metadata": {}, "outputs": [], "source": [ - "dict_name = {} # Leeres Dictionary erzeugen.\n", + "value = dict_name.get(\"key\")\n", + "print(value)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* `dictionary.get(key)` macht das Gleiche wie `dictionary[key]` mit dem Unterschied, dass es `None` zurück gibt, falls der entsprechende Eintrag nicht vorhanden wäre.\n", + "* `dictionary[key]` hingegen würde einen Fehler werfen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Folgende Operationen können auch hilfreich sein:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dict_name = {\"key\": \"value\", \"key2\": \"value2\"}\n", + "# Selten werden auch diese Funktionen gebraucht:\n", + "del dict_name[\"key\"] # Eintrag löschen. Gängiger ist `dict_name.pop(\"key\")`.\n", + "dict_name.popitem() # Löscht den letzten hinzugefügten Eintrag.\n", + "dict_name.clear() # Löschen aller Elemente." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Durch ein Dictionary iterieren\n", "\n", - "dict_name[\"Key\"] = \"value\" # Einfügen bzw. ändern eines Elements.\n", - "dict_name.update({\"key\": \"value\"}) # Einfügen bzw. ändern eines Elements.\n", - "del dict_name[\"Key\"] # Eintrag löschen.\n", - "dict_name.pop(\"key\") # Eintrag löschen.\n", - "dict_name.popitem() # löscht den letzten hinzugefügten Eintrag.\n", - "dict_name.clear() # Löschen aller Elemente.\n", + "Du wirst in die Situation kommen, in welcher du durch ein Dictionary durchiterieren musst." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du z.B. alle Keys und Values durchgehen, dann kannst du das wie folgt tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dict_name = {\"key\": \"value\", \"key2\": \"value2\"}\n", "\n", - "# Gibt den entsprechenden value zurück oder false, falls er nicht existiert:\n", - "dict_name.get(\"key\")\n", - "dict_name.items() # Gibt eine liste mit allen keys und values als Tupel zurück.\n", - "dict_name.keys() # Gibt ein liste mit allen keys zurück.\n", - "dict_name.values() # Gibt eine liste mit allen values zurück." + "for key, value in dict_name.items():\n", + " print(f\"{key} has the value '{value}'.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du das Gleiche tun, aber nur mit den Keys, dann verwende `.keys()`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dict_name.keys()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "und das Gleiche für die Values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dict_name.values()" ] }, { @@ -105,7 +246,7 @@ "metadata": {}, "outputs": [], "source": [ - "import json\n", + "import json # TODO: Was ist der Unterschied zwischen JSON und Dictionary?\n", "\n", "json_string = '{\"name\": \"Colonel Toad\", \"firstShared\": \"2011-08-01\", \"origin\": \"Pinterest\"}'\n", "\n", @@ -209,7 +350,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, From 4a15876519e439f8ad168526f7e289e4b313b1e5 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Wed, 26 Apr 2023 19:00:04 +0200 Subject: [PATCH 40/70] Theory for 05_3_external_programs --- .../05_3_external_programs.ipynb | 287 ++++++++++++++++++ .../05_3_user_interaction.py | 5 + 2 files changed, 292 insertions(+) create mode 100644 docs/05_advanced_techniques/05_3_external_programs.ipynb create mode 100644 docs/05_advanced_techniques/05_3_user_interaction.py diff --git a/docs/05_advanced_techniques/05_3_external_programs.ipynb b/docs/05_advanced_techniques/05_3_external_programs.ipynb new file mode 100644 index 0000000..e25892e --- /dev/null +++ b/docs/05_advanced_techniques/05_3_external_programs.ipynb @@ -0,0 +1,287 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mit externen Programmen kommunizieren" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python bietet die Möglichkeit an, andere Prozesse zu starten und mit ihnen zu kommunizieren." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wenn du den Kommandozeilenbefehl kennst, um ein externes Programm auszuführen, dann ist es auch nicht schwer, dieses mit Python auszuführen.\n", + "\n", + "Möchtest du z.B. den Namen des aktuellen Users herausfinden, dann könntest du folgenden Code (ohne \"!\") in deinem Terminal eingeben:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [], + "source": [ + "!whoami" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dieser Befehl gibt dir den aktuellen Benutzernamen zurück. Diesen Befehl kannst du auch via Python ausführen lassen, wobei die Ausgabe des Befehls direkt ge`print`ed wird:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import subprocess\n", + "\n", + "\n", + "subprocess.call(['whoami'])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du die Ausgabe in einer Python-Variablen speichern können, dann verwende eine andere Funktion:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "user_name = subprocess.check_output([\"whoami\"])\n", + "\n", + "print(f\"Your user name is {user_name}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In der Ausgabe stellst du fest, dass die Rückgabe ein Byte-Array statt einem String ist. Um `b'...'` loszuwerden, musst du die Rückgabe noch dekodieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "user_name = subprocess.check_output([\"whoami\"]).decode(\"utf-8\")\n", + "# Rufe noch `.strip()` auf, um die neue Zeile am Ende zu entfernen.\n", + "\n", + "print(f\"Your user name is {user_name}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installierte Programme ausführen" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit Pythons `subprocess`-Modul können natürlich auch heruntergeladene installierte Programme aufgerufen werden.\n", + "\n", + "Z.B. kannst du auch Git-Befehle ausführen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "current_branch = subprocess.check_output([\"git\", \"branch\", \"--show-current\"]).decode(\"utf-8\").strip()\n", + "\n", + "print(f'You are now working on branch \"{current_branch}\". :)')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Möglichkeiten beschränken sich natürlich nicht auf Konsoleanwendungen. Du kannst auch Anwendungen mit graphischem User-Interface ausführen.\n", + "\n", + "Wenn du VS Code installiert hast und VS Code mit dem Befehl `code` starten kannst, dann kannst du via Python auch ein neues Fenster wie folgt aufmachen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Öffne VS Code mit dem Ordner \"05_advanced_techniques\":\n", + "\n", + "subprocess.call([\"code\", \"-n\", \"../05_advanced_techniques\"])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Windows wird dieser Befehl vielleicht scheitern, weil kein Programm auf den Namen \"code\" im System registriert wurde, nur ein Kommandozeilenbefehl.\n", + "\n", + "Möchtest du einfach den Kommandozeilenbefehl ausführen, dann kannst du das mit `shell=True` tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "subprocess.call([\"code\", \"-n\", \"../05_advanced_techniques\"], shell=True) # Macht evtl. dann bei Mac nichts mehr..." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit `shell=True` hast du mitgeteilt, dass du ein Kommandozeilenbefehl ausführen möchtest. Wenn nicht zwingend notwendig, sollte darauf verzichtet werden, weil so einfacher bösartiger User-Code eingeführt werden könnte, wenn der User irgendwie Zugriff auf die Parameter erhält.\n", + "\n", + "Eine andere Möglichkeit wäre es herauszufinden, welches Programm eigentlich gestartet werden soll.\n", + "\n", + "Das kann z.B. mit dem `where`-Befehl gemacht werden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Herausfinden, wo VS Code installiert ist:\n", + "command = \"where\" # \"which\" on MacOS.\n", + "vscode_path = subprocess.check_output([command, \"code\"]).decode(\"utf-8\").strip().replace(\"\\r\", \"\").split(\"\\n\")[-1]\n", + "\n", + "print(\"Path to VS Code:\", vscode_path)\n", + "\n", + "# Open VS Code:\n", + "subprocess.call([vscode_path, \"-n\", \"../05_advanced_techniques\"])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mit Programm kommunizieren" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Manchmal musst du auch mit einem gestarteten Prozess später noch kommunizieren können, wenn z.B. eine Eingabe erwartet wird.\n", + "\n", + "Vorher hast du Funktionen verwendet, die im `subprocess`-Modul angeboten wurden. Diese Funktionen sind im Prinzip Vereinfachungen von der `Popen`-Klasse, bzw. verwenden sie sogar.\n", + "\n", + "Möchtest du später noch mit einem Prozess kommunizieren können, dann brauchst du schon fast `Popen`.\n", + "\n", + "Siehe dir zuerst unser Script an, das eine Eingabe erwartet: [05_3_user_interaction.py](./05_3_user_interaction.py).\n", + "\n", + "Mit dem folgenden Code können wir dieses Script starten und eine Eingabe einschleusen, sobald sie erwartet wird:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from subprocess import Popen, PIPE\n", + "\n", + "# Möglicherweise ist `python3` nicht als Befehl vorhanden. Ersetze ihn wenn nötig mit deinem.\n", + "# Dies startet das Python-Script:\n", + "with Popen([\"python3\", \"./05_3_user_interaction.py\"], stdin=PIPE, stdout=PIPE, stderr=PIPE) as process:\n", + " \n", + " # Hier schleusen wir \"Luigi\" ein, damit das die Funktion `input()` erhält:\n", + " stdout, stderr = process.communicate(\"Luigi\".encode(\"utf-8\"))\n", + " \n", + " print(stdout, stderr)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dieser Code sieht ein bisschen kompliziert aus, ist es aber nicht ;)\n", + "\n", + "* Mit `Popen(...)` (Konstruktor) haben wir einen neuen Prozess geöffnet (`Popen`: \"Process Open\").\n", + "* `stdin`, `stdout` und `stderr` bezeichnen verschiedene Kanäle für die Kommunikation:\n", + " * `stdin` wird verwendet, um von unserer Seite Input in den Prozess einzuschleusen.\n", + " * `stdout` ist der Kanal, in welchem die Ausgabe des Prozesses erreichbar ist.\n", + " * `stderr` ist der Kanal, in welchem Fehler erreichbar sind.\n", + "* Wir haben diesen Parametern den Wert `subprocess.PIPE` gegeben, damit wir diese Kanäle verwenden können. Ansonsten würden diese an ein User-Terminal weitergeleitet bzw. der Output würde direkt ge`print`et werden, anstelle das wir Zugriff auf diese Kanäle hätten.\n", + "\n", + "* Mit `process.communicate(...)` führen wir den Prozess weiter, bis eine Eingabe erwartet wird.\n", + " * Sobald die Eingabe erwartet wird, übergeben wir dem Prozess den String \"Luigi\", damit dies als User-Eingabe (`input()`-Funktion) erkannt wird.\n", + "\n", + "* Am Schluss sollte der Output in der Variable `stdout` sein und die Variable `stderr` sollte ein leeres Byte-Array sein - ausser es gab einen Fehler.\n", + "\n", + "So, das war bereits die ganze Hexerei!\n", + "\n", + "Versuche nun, die [Lab-Aufgaben](../../labs/05_advanced_techniques/05_3_external_programs.ipynb) zu lösen!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/05_advanced_techniques/05_3_user_interaction.py b/docs/05_advanced_techniques/05_3_user_interaction.py new file mode 100644 index 0000000..34ef33a --- /dev/null +++ b/docs/05_advanced_techniques/05_3_user_interaction.py @@ -0,0 +1,5 @@ +print("Hello, welcome to the world's best program.") + +user_name = input("Please enter your Name: ") + +print(f"Hi {user_name}, nice to meet you!") \ No newline at end of file From 64ad63bdd1c53cd125b7f152a06f3787d44552d8 Mon Sep 17 00:00:00 2001 From: otifant <48472748+otifant@users.noreply.github.com> Date: Mon, 8 May 2023 14:36:59 +0200 Subject: [PATCH 41/70] Update docs/01_basics/000Intro.ipynb (suggestion) Co-authored-by: ksmadar --- docs/01_basics/000Intro.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/01_basics/000Intro.ipynb b/docs/01_basics/000Intro.ipynb index a886009..02a2cd2 100644 --- a/docs/01_basics/000Intro.ipynb +++ b/docs/01_basics/000Intro.ipynb @@ -150,7 +150,7 @@ "source": [ "Ziemlich simpel, oder?\n", "\n", - "Die Methode `print()` nimmt einen Text (nachfolgend String genannt) und gibt ihn in nachher aus.\n", + "Die Methode `print()` nimmt einen Text (nachfolgend String genannt) und gibt ihn in in der Konsole nachher aus.\n", "\n", "Jede `print()` Anweisung schreibt dabei auf eine neue Zeile.\n", "\n", From deac773fba16b4f2314e59eb3428182b5112a4c1 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 9 May 2023 09:17:38 +0200 Subject: [PATCH 42/70] updates from feedback pr --- docs/01_basics/000Intro.ipynb | 28 ++---- docs/01_basics/010Variablen.ipynb | 29 +++--- docs/01_basics/011_Typen.ipynb | 26 +++-- docs/01_basics/015Strings.ipynb | 101 +++++++++++++------- docs/02_control_structures/050Loops.ipynb | 78 +++++++++++++-- docs/03_collections/020Lists.ipynb | 110 +++++++++++++++++++--- 6 files changed, 276 insertions(+), 96 deletions(-) diff --git a/docs/01_basics/000Intro.ipynb b/docs/01_basics/000Intro.ipynb index 02a2cd2..333fcad 100644 --- a/docs/01_basics/000Intro.ipynb +++ b/docs/01_basics/000Intro.ipynb @@ -64,17 +64,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello sam, nice to see you!\n" - ] - } - ], + "outputs": [], "source": [ "import getpass\n", "\n", @@ -128,17 +120,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello World!\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Hello World!\") # Output: Hello World!" ] @@ -152,11 +136,11 @@ "\n", "Die Methode `print()` nimmt einen Text (nachfolgend String genannt) und gibt ihn in in der Konsole nachher aus.\n", "\n", - "Jede `print()` Anweisung schreibt dabei auf eine neue Zeile.\n", + "Jede `print()`-Anweisung schreibt dabei auf eine neue Zeile.\n", "\n", "Jedes Statement im Code wird hierbei auf eine neue Zeile geschrieben, ohne Semikolon.\n", "\n", - "Möchtest du den Code kommentieren, dann kannst du Kommentare mit einem `#`-Zeichen (Hashtag, \"Gartenhag\") einleiten. In den Kommentaren kannst du alles schreiben, was du willst. Diese dienen oft dazu, etwas komplizierteres zu beschreiben, wenn der Code nicht selbsterklärend ist.\n", + "Möchtest du den Code kommentieren, dann kannst du Kommentare mit einem `#`-Zeichen (Hashtag, \"Gartenhag\") einleiten. In den Kommentaren kannst du alles schreiben, was du willst. Diese dienen oft dazu, etwas Komplizierteres zu beschreiben. Kommentare sollten aber nicht als Ersatz für schlecht strukturierten oder schwer verständlichen Code verwendet werden. Stattdessen sollten sie dazu verwendet werden, um zu erklären, warum etwas so implementiert wurde, insbesondere in Fällen, in denen dies nicht offensichtlich ist.\n", "\n", "Der Code wird dann von Zeile nach Zeile abgearbeitet. Im Gegensatz zu anderen Programmiersprachen wie Java, können die Anweisungen direkt auf oberster Ebene in eine Datei geschrieben werden, ohne dass du diese noch irgendwo reinpacken musst (also keine Methoden/Funktionen/Klassen erforderlich).\n", "\n", diff --git a/docs/01_basics/010Variablen.ipynb b/docs/01_basics/010Variablen.ipynb index 41fa8ed..abfec5e 100644 --- a/docs/01_basics/010Variablen.ipynb +++ b/docs/01_basics/010Variablen.ipynb @@ -7,17 +7,21 @@ "source": [ "# Variablen in Python\n", "\n", - "In Python werden variablen initialisiert, sobald sie einen Wert zugewiesen bekommen.\n", - "Es benötigt weder die Verwendung eines Keywords (wie z.B. new), Noch die Angabe eines Datentypen.\n", - "Dies ist nämlich nicht erforderlich, da alle variablen als Objekte angesehen werden. Python bestimmt im Hintergrund, um welchen Datentyp es sich hierbei handelt. \n", + "In Python werden Variablen initialisiert, sobald sie einen Wert zugewiesen bekommen.\n", "\n", - "Das Einfachste Beispiel lautet ganz einfach `x = 5`.\n", + "Im folgenden Beispiel wird der Variable `x` den Wert `5` zugewiesen: \n", + "```python\n", + "x = 5\n", + "```\n", "\n", - "In Python ist es üblich ein sogenanntes **snake_case**-Naming zu wählen, nicht wie in Java das \"camelCase\" oder \"PascalCase\".\n", + "Es benötigt weder die Verwendung eines Keywords (wie z.B. `var`, `const`, `new`), noch die Angabe eines Datentypen.\n", + "\n", + "\n", + "In Python ist es üblich, ein sogenanntes **snake_case**-Naming zu wählen, nicht wie in Java das \"camelCase\" oder \"PascalCase\".\n", "* Dabei werden Wörter mit einem Unterstrich (also \"_\") getrennt. \n", "* Variablennamen starten wie üblich mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben. Der Name von Konstanten besteht nur aus Grossbuchstaben, einzelne Wörter werden mit einem Unterstrich kombiniert.\n", "\n", - "Einige Beispiele für die Initialisierung und Operationen mit Variablen: " + "Einige Beispiele für die Initialisierung von Variablen: " ] }, { @@ -38,9 +42,9 @@ "my_string1 = 'Hello' # Initialisierung eines Strings mit '\n", "my_string2 = \"Hello\" # Initialisierung eines Strings mit \"\n", "\n", - "# Initialisierung mit \", der Apostroph wird hier als character angesehen.\n", + "# Initialisierung mit \", der Apostroph wird hier als Character angesehen:\n", "my_string3 = \"Don't worry about apostrophes\"\n", - "# Initialisierung mit ', Anführuns- und Schlusszeichen werden hier als character angesehen.\n", + "# Initialisierung mit ', Anführungs- und Schlusszeichen werden hier als Character angesehen:\n", "my_string4 = 'I just want to say \"Hello\"'" ] }, @@ -49,7 +53,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ein weiteres cooles Feature in Python ist die Mehrfachzuweisung. Folgende Beispiele sind valider Python code:" + "Ein weiteres cooles Feature in Python ist die Mehrfachzuweisung. Folgendes ist valider Python-Code:" ] }, { @@ -67,8 +71,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hier wurde x der Wert 10, y der Wert 41 und z den Wert 5.0 zugewiesen.\n", - "In der zweiten Zeile wurde den Variablen a, b und c jeweils der String \"Hello\" zugewiesen." + "Hier wurde `x` der Wert `10`, `y` der Wert `41` und `z` den Wert `5.0` zugewiesen.\n", + "\n", + "In der zweiten Zeile wurde den Variablen `a`, `b` und `c` jeweils der String `\"Hello\"` zugewiesen." ] } ], @@ -88,7 +93,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, diff --git a/docs/01_basics/011_Typen.ipynb b/docs/01_basics/011_Typen.ipynb index a2b6121..13bea7d 100644 --- a/docs/01_basics/011_Typen.ipynb +++ b/docs/01_basics/011_Typen.ipynb @@ -33,7 +33,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Und ausserdem kannst du auf Zahlen (und solchen Variablen) bestimmte Operationen durchführen, z.B. eine Addition. In nächsten Beispiel erstellen wir neue Variablen, die aus mehreren Variablen gleichzeitig erstellt werden:" + "Und ausserdem kannst du auf Zahlen bestimmte Operationen durchführen, z.B. eine Addition.\n", + "\n", + "In nächsten Beispiel erstellen wir neue Variablen `zahl3`, die dem Resultat aus der Addition von den ersten beiden Zahlen `zahl1` und `zahl2` entspricht:" ] }, { @@ -285,7 +287,7 @@ "metadata": {}, "outputs": [], "source": [ - "if (bool1):\n", + "if bool1:\n", " print(\"There we go!\")" ] }, @@ -323,8 +325,18 @@ "source": [ "bool5 = bool(0)\n", "bool6 = bool(1)\n", + "bool7 = bool(2)\n", + "bool8 = bool(-1)\n", "\n", - "print(bool5, bool6)" + "print(bool5, bool6, bool7, bool8)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Funktion `bool(...)` gibt für alle Zahlen $\\neq 0$ den Wert `True` zurück, für `0` den Wert `False`." ] }, { @@ -347,9 +359,9 @@ "metadata": {}, "outputs": [], "source": [ - "a = str(100) # a = '100'\n", - "b = int(4.2) # b = 4\n", - "c = float(7) # c = 7.0\n", + "a = str(100) # a = '100'\n", + "b = int(4.2) # b = 4\n", + "c = float(7) # c = 7.0\n", "d = int('42') # d = 42\n", "\n", "print(a, b, c, d)\n", @@ -375,7 +387,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, diff --git a/docs/01_basics/015Strings.ipynb b/docs/01_basics/015Strings.ipynb index be9412a..c089245 100644 --- a/docs/01_basics/015Strings.ipynb +++ b/docs/01_basics/015Strings.ipynb @@ -8,8 +8,6 @@ "# Strings\n", "\n", "Strings können in Python mit einfachen oder doppelten Anführungszeichen initialisiert werden.\n", - "Ebenfalls ist es möglich, Strings über mehrere Zeilen mit dreifach doppelten oder dreifach einfachen Anführungszeichen zu initialisieren.\n", - "Hierbei werden die Leer- und Enterzeichen mitgespeichert. Ein String über 3 Zeilen wird bei einem `print()` Aufruf auch über 3 Zeilen in der Konsole ausgegeben.\n", "Im nachfolgenden Code findest du ein paar Beispiele:" ] }, @@ -42,32 +40,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Strings sind wie Arrays bzw. Listen!\n", - "\n", - "* Man kann auf die Elemente (Character bzw. Buchstaben) mit dem `[]` Operator zugreifen.\n", - "* Ebenfalls kann man mit Loops über Strings iterieren oder die die Länge des Strings ausgeben lassen.\n", - "* Welche Loops es gibt und wie man sie implementiert wird in einem späteren Kapitel behandelt.\n", - "\n", - "Einige Operationen mit Strings sind im nachfolgenden Code zu finden:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a = \"Hello World!\"\n", - "print(len(a)) # 12\n", - "print(a[1]) # e\n", - "\n", - "# Jedes Zeichen wird auf einer separaten Zeile ausgegeben:\n", - "for x in a:\n", - " print(x)\n", - "\n", - "# Der `in`-Operator gibt `True` zurück, wenn das vor dem `in` im Wert rechts daneben vorkommt:\n", - "print(\"orl\" in a) # True\n", - "print(\"i\" not in a) # True" + "Wie im obigen Code ersichtlich, ist es möglich, Strings über mehrere Zeilen mit dreifachen Anführungszeichen zu initialisieren.\n", + "Hierbei werden die Leerzeichen und Zeilenumschläge mitgespeichert. Ein String über 3 Zeilen wird bei einem `print()` Aufruf auch über 3 Zeilen in der Konsole ausgegeben." ] }, { @@ -79,8 +53,7 @@ "\n", "Eine weitere coole Operation auf Strings ist das sogenannte **Slicing**.\n", "\n", - "Wie der Name schon suggeriert, kann man Strings in verschiedene Teile zerlegen. Dabei nehmen wir aber nicht einzelne Buchstaben wie vorher,\n", - "sondern ganze Teile. Einige slicing Operationen sind:" + "Wie der Name schon suggeriert, kann man Strings in verschiedene Teile zerlegen. Einige slicing Operationen sind:" ] }, { @@ -114,11 +87,53 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wie auch in Java hat Python einige vordefinierte Methoden auf Strings.\n", + "Mit `beispiel[2:12]` haben wir den String ab dem 3. bis zum 12. Buchstaben ausgeschnitten. Die erste Zahl ist der sogenannte Start-Index und die zweite der End-Index, wobei die 12 exklusiv ist (also gerade bis vor Index 12).\n", + "\n", + "Wie in fast allen anderen Programmiersprachen auch, beginnt man bei Index 0. Also das erste Element in Listen und Strings hat Index 0.\n", "\n", - "Einige sind nachfolgend Aufgelistet.\n", + "Lässt du eine Zahl aus beim Slicing, dann wird der Default-Wert verwendet:\n", + "* Bei der ersten Zahl ist es 0: also von Beginn an.\n", + "* Bei der zweiten Zahl ist es -1: Also bis ganz nach hinten.\n", "\n", - "(Falls du noch weitere Methoden sehen möchtest gibt es hier eine grosse Liste: https://www.w3schools.com/python/python_strings_methods.asp)" + "Negative zahlen bedeuten, dass man von hinten beginnt zu rechnen:\n", + "* -1 ist das letzte Element.\n", + "* -2 das zweitletzte Element.\n", + "* usw." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du z.B. nur einen Buchstaben an einer bestimmten Position im String erhalten, dann kannst du via Index darauf zugreifen. Im folgenden Beispiel greifen wir auf den 2. Buchstaben (Index = 1) zu:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "beispiel[1]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## String-Methoden" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie auch in Java hat Python einige vordefinierte Methoden auf Strings.\n", + "\n", + "Einige sind nachfolgend Aufgelistet:" ] }, { @@ -149,6 +164,26 @@ "print(s + \" Java too!\") # Python is fun! Java too!" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Einige der bekanntesten String-Methoden sind:\n", + "* `upper()`: Gibt den String in Grossbuchstaben zurück (verändert den ursprünglichen String aber nicht).\n", + "* `lower()`: Gibt den String in Kleinbuchstaben zurück.\n", + "* `replace()`: Gibt einen neuen String zurück, wobei bestimmte aufeinander folgende Buchstaben (Parameter 1) mit anderen Buchstaben (Parameter 2) ausgetauscht wurden.\n", + "* `strip()`: Gibt einen neuen String zurück ohne die Leerzeichen am Anfang und am Ende." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Falls du noch weitere Methoden sehen möchtest gibt es hier eine grosse Liste: https://www.w3schools.com/python/python_strings_methods.asp" + ] + }, { "attachments": {}, "cell_type": "markdown", diff --git a/docs/02_control_structures/050Loops.ipynb b/docs/02_control_structures/050Loops.ipynb index d87ed31..459e03b 100644 --- a/docs/02_control_structures/050Loops.ipynb +++ b/docs/02_control_structures/050Loops.ipynb @@ -5,13 +5,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For-Loop\n", + "# Schlaufen/Loops\n", + "Loops erlauben es, Code-Blöcke mehrere Male nacheinander auszuführen. Nachfolgend schauen wir uns den `for`- und `while`-Loop an." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## For-Loop\n", "\n", "Es gibt mehrere Möglichkeiten, einen For-Loop in Python zu implementieren. \n", - "Eine Möglichkeit ist die Benutzung der `range()` methode, welche wiederum selbst verschieden eingesetzt werden kann. \n", - "Eine andere Möglichkeit ist einfach über alle Elemente einer Liste (oder auch eines Sets, Dictionarys, ...) zu iterieren.\n", - "Beachte den Doppelpunkt und die Einrückung des Bodys.\n", - "Das Nachfolgende Beispiel zeigt einige for loops." + "\n", + "* Eine Möglichkeit ist die Benutzung der `range()`-Funktion, welche sehr verschieden eingesetzt werden kann.\n", + "* Eine andere Möglichkeit ist es, über alle Elemente einer Liste (oder auch eines Sets, Dictionarys,) zu iterieren. (Wird in einem späteren Kapitel behandelt.)\n", + "\n", + "Beachte den Doppelpunkt und die Einrückung des Blockes.\n", + "\n", + "Das Nachfolgende Beispiel zeigt einige `for`-Loops:" ] }, { @@ -26,7 +38,8 @@ "for i in range(3, 8): # i = 3, 4, 5, 6, 7\n", " print(i)\n", "\n", - "for i in range(2, 9, 3): # i = 2, 5, 8\n", + "\n", + "for i in range(0, 10, 3): # i = 0, 3, 6, 9\n", " print(i)\n", "\n", "numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", @@ -39,7 +52,56 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "While-Loop\n", + "**Erklärung zum obigen Beispiel**\n", + "* Die `range(...)`-Funktion gibt ein Konstrukt zurück, dass alle Elemente beinhaltet bis zu einer bestimmten Zahl. \n", + " * `range(end)`: `range(10)` beinhaltet alle Zahlen von 0 bis 9.\n", + " * `range(start, end)`: `range(3,8)` beinhaltet so alle Zahlen von 3 bis 7. \n", + " * `range(start, end, step)`: Ein drittes Argument bewirkt, dass z.B. nur jedes 3. Element berücksichtigt wird. `range(0, 10, 3)` geht von 0 bis 9 und nur jedes 3. Element (einschliesslich das erste) wird berücksichtigt. Wird aber nur selten gebraucht.\n", + "\n", + "* Beim letzten `for`-Loop siehst du besser, um was es bei `for`-Loops eigentlich geht: Man iteriert über alle Elemente in einer Liste.\n", + " * Listen werden in einem späteren Kapitel erwähnt. Daher musst du dieses Beispiel auch noch nicht zu 100% verstehen.\n", + " * Wichtig ist, dass die Variable `numbers` hier eine Liste mit einigen Elementen zugewiesen bekommen hat.\n", + " * Ein `for`-Loop ist ganz generell so aufgebaut:\n", + " ```python\n", + " for (ein_element in liste):\n", + " block()\n", + " ```\n", + " * Hier steht `ein_element` für eine neue Variable, die du definierst.\n", + " * Die `liste` ist eine existierende Variable, die mehrere Elemente enthält.\n", + " * Der `block` wird so oft ausgeführt, wie `liste` Elemente enthält.\n", + " * Beim ersten Durchgang wird deiner neuen Variable (hier `ein_element`) das erste Element aus der `liste` zugewiesen.\n", + " * Beim zweiten Durchgang das zweite Element.\n", + " * usw." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Beispiel: Iterieren durch einen String\n", + "\n", + "Du kannst `for`-Loops z.B. dafür verwenden, um durch alle Buchstaben in einem String zu iterieren:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = \"Hello World!\"\n", + "\n", + "for x in a:\n", + " print(x)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## While-Loop\n", "\n", "Der While Loop funktioniert genau wie in Java auch. Hier ein Beispiel:" ] @@ -101,7 +163,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.6" }, "orig_nbformat": 4 }, diff --git a/docs/03_collections/020Lists.ipynb b/docs/03_collections/020Lists.ipynb index f9e4fb1..7479e8f 100644 --- a/docs/03_collections/020Lists.ipynb +++ b/docs/03_collections/020Lists.ipynb @@ -12,8 +12,8 @@ "\n", "Wir sehen im folgenden Code-Beispiel wie mit Listen gearbeitet werden kann.\n", "\n", - "Da in Python alle Variablen als Objekte gespeichert sind, kann man in eine Liste auch verschiedene Datentypen einfügen.\n", - "Aber Vorsicht! Dies ist nicht zu empfehlen und Fehleranfällig!\n", + "Da in Python alle Variablen als Objekte gespeichert sind, kann man in einer Liste auch Objekte verschiedener Datentypen einfügen.\n", + "Aber Vorsicht! Dies ist nicht zu empfehlen, weil es fehleranfällig ist!\n", "Einige Funktionen, wie zum Beispiel das Sortieren funktioniert nicht bei einer Liste mit unterschiedlichen Datentypen!" ] }, @@ -42,8 +42,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In diesem Beispiel sieht man, dass das Ausgeben einer Liste einfach mit `print(list)` machbar ist. Es braucht hierfür keine `toString()`-Methode wie z.B. in Java.\n", - "Hilfreiche Operationen bezüglich Listen sind die folgenden:" + "Mit dieser Anweisung haben wir eine neue Liste erstellt:\n", + "```python\n", + "my_list = []\n", + "```\n", + "\n", + "* Mit der Funktion `append(...)` werden neue Elemente in der Liste hinzugefügt.\n", + "* Mit `pop(...)` wird das Element an der angegebenen Position entfernt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Durch Listen iterieren\n", + "\n", + "Das, was du am häufigsten mit einer Liste machen wirst, ist wahrscheinlich, durch alle ihre Elemente zu iterieren. Das kannst du am besten mit einer `for`-Schleife:" ] }, { @@ -51,26 +66,93 @@ "execution_count": null, "metadata": {}, "outputs": [], + "source": [ + "for element in my_list:\n", + " print(element)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel wurde jedes einzelne Element in mit der `print(...)`-Funktion in der Konsole ausgegeben." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Weitere Funktionen auf Listen" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hilfreiche Operationen bezüglich Listen sind die folgenden:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], "source": [ "list_name = [] # leere Liste initialisieren\n", - "list_name = {\"element1\", \"element2\"} # Initialisierung mit Elementen\n", + "list_name = [\"element1\", \"element2\"] # Initialisierung mit Elementen\n", "# Initialisierung mit Elementen via Konstruktor\n", "list_name = list((\"element1\", \"element2\"))\n", "\n", - "list_name.append(\"element\") # fügt ein Element am Ende hinzu\n", + "list_name.append(\"element3\") # fügt ein Element am Ende hinzu\n", "# fügt das Element an der angegebenen Position hinzu\n", - "list_name.insert(\"position\", \"element\")\n", + "list_name.insert(2, \"element4\")\n", + "\n", + "list_name.pop(2) # löscht das Element an der angegebenen Position\n", + "index_of_element1 = list_name.index(\"element1\")\n", + "list_name.remove(\"element1\") # löscht das angegebene Element\n", "\n", - "list_name.pop(\"position\") # löscht das Element an der angegebenen Position\n", - "list_name.remove(\"element\") # löscht das angegebene Element\n", - "list_name.clear() # löscht alle Elemente\n", + "contains_element2: bool = \"element2\" in list_name # Ist True, wenn das Element in der Liste vorkommt.\n", "\n", "len(list_name) # gibt die Länge (anzahl Elemente) zurück\n", "list_name.reverse() # dreht die Reihenfolge der Liste um\n", - "list_name.sort() # sortiert die Liste\n", + "list_name.sort() # sortiert die Liste" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine Liste kannst du auf diese Arten neu erstellen:\n", + "* direkt mit der Listen-Schreibweise:\n", + "```python\n", + "list_name = []\n", + "list_name = [\"element1\", \"element2\"] \n", + "```\n", + "* oder mit der Funktion `list`:\n", + "```python\n", + "list_name = list()\n", + "list_name = list((\"element1\", \"element2\"))\n", + "```\n", + "\n", + "Neue Elemente können mit `append` und `insert` hinzugefügt werden.\n", + "* `append(element)` fügt ein neues Element am Ende der Liste hinzu.\n", + "* `insert(position: int, element)` fügt das `element` an der angegebenen `position` hinzu.\n", + "\n", + "Mit `index(element)` erhältst du den Index/die Position des Elementes, an der es zum ersten Mal in der Liste vorkommt.\n", + "\n", + "Elemente löschen kannst du mit `pop(index)` und `remove(element)`.\n", + "* `pop(index)` löscht das Element an der angegebenen Position.\n", + "* `remove(element)` löscht das angegebene Element in der Liste.\n", + "\n", + "Mit dem `in`-Operator kannst du prüfen, ob ein bestimmtes Element in der Liste vorkommt. Ist das Gleiche wie `contains()` oder `includes()` in anderen Programmiersprachen. \n", + "\n", + "Mit `len(liste)` erhältst du die Anzahl Elemente in der Liste.\n", "\n", - "# gibt den Index des ersten elementes mit diesem Wert aus\n", - "list_name.index(\"element\")" + "Sortieren kannst du die Liste mit `sort()` und `reverse()`." ] }, { @@ -115,7 +197,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.9.6" }, "orig_nbformat": 4 }, From 6bb783257dd16401d25c2a5e744e2f258dd62028 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 9 May 2023 09:24:36 +0200 Subject: [PATCH 43/70] fixed typo --- labs/02_control_structures/02_control_structures.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labs/02_control_structures/02_control_structures.ipynb b/labs/02_control_structures/02_control_structures.ipynb index e894d39..642e234 100644 --- a/labs/02_control_structures/02_control_structures.ipynb +++ b/labs/02_control_structures/02_control_structures.ipynb @@ -102,7 +102,7 @@ "\n", "* Summen von 2 Zahlen berechnen.\n", "* Kleinstes gemeinsames Vielfaches (kgV) von zwei Zahlen Berechnen\n", - "* Löse für gegebene `a`, `b` und `c` die Gleichung $ax^2+bx+c=0$. Hierfür kannst du die \"Mitternachtsformel\" brauchen. Denke daran, dass es zwei Lösungen geben kann. Verwende also einen sinnvollen Rückgabe-Typ. (Das Programm muss nur Lösungen zurückgeben, wenn es reelle Lösungen (also keine komplexen) gibt.). Denke daran am Schluss zu überprüfen, ob deine Lösung stimmt (mit Code automatisch).\n" + "* Löse für gegebene `a`, `b` und `c` die Gleichung $ax^2+bx+c=0$. Hierfür kannst du die \"Mitternachtsformel\" brauchen. Denke daran, dass es zwei Lösungen geben kann. Verwende also einen sinnvollen Rückgabe-Typ. (Das Programm muss nur Lösungen zurückgeben, wenn es reelle Lösungen (also keine komplexen) gibt.). Denke daran, am Schluss zu überprüfen, ob deine Lösung stimmt (mit Code automatisch).\n" ] }, { From 83138e82b825f65fc5f9ffe752a8934aed95c1a7 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 9 May 2023 12:48:23 +0200 Subject: [PATCH 44/70] input from review pr --- docs/01_basics/015Strings.ipynb | 5 +- .../040Conditions_and_if_else.ipynb | 172 +++++++++++++++--- docs/02_control_structures/050Loops.ipynb | 54 +++++- docs/02_control_structures/060Functions.ipynb | 163 +++++++++++++++-- 4 files changed, 345 insertions(+), 49 deletions(-) diff --git a/docs/01_basics/015Strings.ipynb b/docs/01_basics/015Strings.ipynb index c089245..8f43751 100644 --- a/docs/01_basics/015Strings.ipynb +++ b/docs/01_basics/015Strings.ipynb @@ -77,9 +77,8 @@ "print(beispiel[4:]) # on ist eine tolle Programmiersprache!\n", "print(beispiel[22:]) # Programmiersprache!\n", "\n", - "# Start beim 8. letzten Buchstaben, Ende beim 5. letzten Buchstaben.\n", - "print(beispiel[-8:-5]) # spr\n", - "print(beispiel[-19:-10]) # Programmi" + "# Start beim 8. letzten Buchstaben, Ende beim 6. letzten Buchstaben.\n", + "print(beispiel[-8:-5]) # spr" ] }, { diff --git a/docs/02_control_structures/040Conditions_and_if_else.ipynb b/docs/02_control_structures/040Conditions_and_if_else.ipynb index 7d05cde..4a9adc0 100644 --- a/docs/02_control_structures/040Conditions_and_if_else.ipynb +++ b/docs/02_control_structures/040Conditions_and_if_else.ipynb @@ -5,24 +5,124 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In Python gibt es natürlich auch bool'sche ausdrücke. Die meisten Operanden wie:\n", - "* `==`\n", - "* `<=`\n", - "* `<`\n", - "* `>`\n", - "* `>=`\n", - "* `!=` \n", + "# Bedingungen\n", + "Wie im richtigen Leben müssen Entscheidungen entsprechend der aktuellen Situation getroffen werden.\n", "\n", - "sollten bekannt sein und funktionieren gleich wie in Java.\n", - "Zusätzlich gibt es folgende Operatoren:\n", + "Hierfür bieten Programmiersprachen wie Python die Möglichkeit, Bedingungen zu prüfen und Code nur auszuführen, wenn die entsprechenden Bedingungen erfüllt sind." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nachfolgend ein Beispiel für einen kleinen Snack-Automaten, der je nach dem ob genügend Geld eingeworfen wurde unterschiedlichen Output generiert:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "money = 1.25\n", + "price = 1.50\n", "\n", - "* `and` Funktioniert analog dem **&&** Operator aus Java\n", - "* `or` Funktioniert analog dem **||** Operator aus Java\n", - "* `in` Gibt True zurück falls ein Element in einem Objekt (z.B. einer Liste) vorhanden ist, sonst False\n", - "* `is` Im Gegensatz zum `==` vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", - "* `not` negiert einen bool'schen Ausdruck\n", + "if money < price:\n", + " print(\"Du hast nicht genügend Geld eingeworfen. Bitte werfe zusätzlich\", price - money, \"Fr ein.\")\n", + "else:\n", + " print(\"Geniesse deinen Snack!\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier wird eine Bedingung mit dem `if`-Keyword eingeleitet. Nur wenn die Bedingung nach dem `if`-Keyword (und vor dem Doppelpunkt) zutrifft, wird ihr Block ausgeführt.\n", "\n", - "Im Folenden Beispiele werden alle print statements ausgeführt, weil alle if-Bedinungen zu True evaluieren:" + "Wenn die Bedingung nicht zutrifft, dann wird der `else`-Block ausgeführt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bool'sche Ausdrücke" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im Beispiel des Snackautomaten hast du den `<`-Operator verwendet, um zu prüfen, ob das eingeworfene Geld mind. dem Preis entspricht:\n", + "\n", + "```python\n", + "if money < price:\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python gibt es viele weitere bool'sche Ausdrücke:\n", + "* `==`: Prüft, ob zwei Elemente \"gleich\" sind.\n", + "* `!=`: Prüft, ob die beiden Elemente ungleich sind.\n", + "* `<`: Prüft, ob das erste Element **kleiner** als das Zweite ist.\n", + "* `<=`: Prüft, ob das erste Element **kleiner oder gleich** als das Zweite ist.\n", + "* `>`: Prüft, ob das erste Element **grösser** als das Zweite ist.\n", + "* `>=`: Prüft, ob das erste Element **grösser oder gleich** als das Zweite ist." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Müssen hingegen mehrere Bedingungen erfüllt sein, dann kannst du mehrere Bedingungen kombinieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "money = 1.25\n", + "price = 1.50\n", + "currency = \"CHF\"\n", + "expected_currency = \"CHF\"\n", + "\n", + "if money >= price and currency == expected_currency:\n", + " print(\"Geniesse deinen Snack.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel wird der `if`-Block nur ausgeführt, wenn beide Bedingungen erfüllt sind." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Neben dem `and`-Operatoren gibt es in Python noch weitere Operatoren, die englische Wörter sind:\n", + "\n", + "* `and` prüft, ob beide Bedingungen zutreffen.\n", + "* `or` prüft, ob mind. 1 der Bedingungen zutreffen.\n", + "* `in` prüft, ob ein Element in einer Sequenz (z.B. einer Liste) vorhanden ist.\n", + "* `is` im Gegensatz zum `==` vergleicht der is-Operator nicht die Werte der Variablen, sondern die Instanzen selbst. Siehe Beispiel unten.\n", + "* `not` negiert einen bool'schen Ausdruck. Das heisst, tritt ein Ausdruck zu, trifft er nicht mehr zu und umgekehrt.\n", + "\n", + "Im folgenden Beispiel werden alle `print`-Blöcke ausgeführt, weil alle `if`-Bedingungen zutreffen:" ] }, { @@ -49,6 +149,9 @@ "if 1 in x:\n", " print(\"1 is in x.\")\n", "\n", + "if a is not None: # Null-Check in Python.\n", + " print(\"a is not None.\")\n", + "\n", "if not b:\n", " print(\"b is false.\")" ] @@ -58,9 +161,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Anweisungen `if`, `else` und `else if` gibt es auch in Python. Allerdings sind die Keywords leicht abgeändert. \n", - "In Python heissen sie `if`, `elif` und `else`.\n", - "Hier ist ein kleines Beispiel, wie if, elif und else Anweisungen verwendet werde können:" + "## Komplexere Bedingungen mit `if`, `elif` und `else`\n", + "\n", + "Die Keywords `if`, `elif` und `else` werden für Bedingungen verwendet.\n", + "Hier ist ein kleines Beispiel:" ] }, { @@ -79,6 +183,16 @@ " print(\"Du bist im Rentenalter.\")" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wenn die vorherige Bedingung nicht zutraf, wird die Bedingung im `elif` geprüft. Wenn diese zutrifft, wird ihr Block ausgeführt.\n", + "\n", + "Wenn keine der Bedingungen zutrifft, wird der `else`-Block ausgeführt." + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -110,9 +224,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In diesem Beispiel wird geprüft, ob x negativ, null oder positiv ist. Wenn x null ist, wird der pass-Block ausgeführt, der hier leer ist (es passiert also nichts). Wenn x negativ oder positiv ist, wird eine entsprechende Ausgabe erstellt.\n", + "In diesem Beispiel wird geprüft, ob x negativ, `0` oder positiv ist. Wenn x `0` ist, wird `pass` ausgeführt -> es passiert nichts.\n", "\n", - "Ein weiteres Beispiel für die Verwendung von pass ist, wenn man eine Funktion oder Klasse definiert, aber noch nicht weis, welchen Code Sie darin später befinden wird:" + "Wenn x negativ oder positiv ist, wird eine entsprechende Ausgabe erstellt.\n", + "\n", + "Häufig wird auch `pass` verwendet, wenn man eine Funktion oder Klasse definiert, aber noch nicht weiss, welchen Code Sie später darin befinden wird bzw. leer bleiben wird:" ] }, { @@ -138,8 +254,22 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" }, "orig_nbformat": 4 }, diff --git a/docs/02_control_structures/050Loops.ipynb b/docs/02_control_structures/050Loops.ipynb index 459e03b..dd4039b 100644 --- a/docs/02_control_structures/050Loops.ipynb +++ b/docs/02_control_structures/050Loops.ipynb @@ -103,7 +103,43 @@ "source": [ "## While-Loop\n", "\n", - "Der While Loop funktioniert genau wie in Java auch. Hier ein Beispiel:" + "Wenn ein bestimmter Code solange wiederholt ausgeführt werden soll, wie eine Bedingung zutrifft, dann hilft hier womöglich auch eine `while`-Schlaufe." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du z.B. ein kleines Game simulieren, in welchem eine Katze versucht eine Maus zu fangen, dann könnte folgendes Konstrukt in die richtige Richtung führen:\n", + "\n", + "```python\n", + "caught = False\n", + "\n", + "while not caught:\n", + " caught = try_to_catch_mouse()\n", + "\n", + "print(\"Du hast die Maus gefangen. Gut gemacht!!!\")\n", + "```\n", + "\n", + "Der Code-Block innerhalb der `while`-Schlaufe wird solange wiederholt ausgeführt, wie die Bedingung (hier `not caught`) erfüllt ist." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In vielen Fällen kann ein `while`-Loop auch in einen `for`-Loop umgewandelt werden.\n", + "\n", + "Betrachte folgenden `for`-Loop:\n", + "\n", + "```python\n", + "for i in range(3):\n", + " print(i)\n", + "```\n", + "\n", + "Dieser `for`-Loop würde mit einer `while`-Schlaufe wie folgt aussehen (hier ist der `for`-Loop zu bevorzugen):" ] }, { @@ -115,9 +151,15 @@ "i = 0\n", "while i < 3:\n", " print(i)\n", - " i += 1\n", - "\n", - "#output: 0, 1, 2" + " i += 1" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Schlaufe/Durchlauf abbrechen" ] }, { @@ -125,7 +167,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Statements `break` and `continue` sollten bekannt sein und funktionieren ebenfalls wie in Java:" + "Mit den Statements `break` and `continue` kannst du die Schlaufe bzw. den aktuellen Durchlauf abbrechen:\n", + "* `continue` beendet den aktuellen Durchlauf und geht zum nächsten Schlaufen-Durchlauf weiter.\n", + "* `break` beendet die Schlaufe komplett." ] }, { diff --git a/docs/02_control_structures/060Functions.ipynb b/docs/02_control_structures/060Functions.ipynb index 2d3c40d..53a7c44 100644 --- a/docs/02_control_structures/060Functions.ipynb +++ b/docs/02_control_structures/060Functions.ipynb @@ -5,10 +5,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kommen wir zum Thema Funktionen.\n", - "Eine Funktion in Python ist das, was wir in Java eine Methode nennen. Das Gundprinzip sollte klar sein.\n", - "Funktionen werden immer mit dem keyword `def` definiert. Bei einer Funktion des Typs void (ohne Rückgabewert) braucht es kein zusätzliches Keyword.\n", - "Eine Funktion ist in Python folgendermassen aufgebaut:" + "# Funktionen\n", + "\n", + "Es kommt ziemlich oft vor, dass der gleiche Code bzw. die gleiche Aufgabe mehrmals mit anderen Werten aufgerufen werden soll.\n", + "\n", + "Solcher Code kann wiederverwendet werden, indem er in eine Funktion gepackt wird." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Funktionen werden mit dem Keyword `def` definiert. Eine Funktion ist in Python folgendermassen aufgebaut:" ] }, { @@ -17,9 +26,9 @@ "metadata": {}, "outputs": [], "source": [ - "def funktion_name(arg1, arg2):\n", - " # body\n", - " return # can be omited" + "def funktions_name(arg1, arg2):\n", + " # Code, der aufgerufen wird.\n", + " pass" ] }, { @@ -27,7 +36,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zwei Beispiele könnten die Folgenden sein:" + "Hier zwei Beispiele von Funktionen:" ] }, { @@ -40,12 +49,14 @@ " print(\"Hello\")\n", "\n", "\n", - "def sum(i, j):\n", - " return i + j\n", + "def sum(a, b):\n", + " return a + b\n", "\n", "\n", "# Call the defined functions\n", "print_hello()\n", + "print_hello()\n", + "print(sum(1, 2))\n", "print(sum(1, 6))" ] }, @@ -54,9 +65,94 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es können noch einige zusätziche Informationen bei der Definition angegeben werden, wie Beispielsweise\n", - "Ein Docstring (Beschreibung der Funktion), ein Return Datentyp und Datentypen der Parameter.\n", - "Die Funktionen von Oben könnten also wie folgt angepasst werden:" + "Die erste Funktion kann mit der Anweisung `print_hello()` aufgerufen werden und führt den Code in der Funktion aus.\n", + "\n", + "Die zweite Funktion schauen wir uns nachfolgend noch ein bisschen genauer an." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funktionen mit Parameter und Rückgabewert\n", + "\n", + "### Parameter\n", + "Im letzten Beispiel hatten wir diese Funktion:\n", + "\n", + "```python\n", + "def sum(a, b):\n", + " return a + b\n", + "```\n", + "\n", + "Das in den Klammern nennt sich \"Parameter\". Die einzelnen Variablen dort drin (also `a` und `b`) nennen sich Argumente.\n", + "\n", + "In unserem letzten Code-Beispiel sah der Funktionsaufruf wie folgt aus, wobei auch gleich Werte für den Parameter übergeben wurden:\n", + "\n", + "```python\n", + "sum(1, 6)\n", + "```\n", + "\n", + "Für diesen Funktionsaufruf werden dann die Argumente der Funktion wie folgt zugewiesen sein:\n", + "\n", + "```python\n", + "a = 1\n", + "b = 6\n", + "```\n", + "\n", + "### Rückgabewert\n", + "Sicherlich ist dir bei dieser Funktion das Keyword `return` aufgefallen:\n", + "\n", + "```python\n", + "def sum(a, b):\n", + " return a + b\n", + "```\n", + "\n", + "Dieses `return`-Keyword ermöglicht es, dem Aufrufer etwas zurückzugeben. Siehe dir dieses Beispiel an:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def sum(a, b):\n", + " return a + b\n", + "\n", + "result = sum(5, 6)\n", + "print(result)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Entscheidend ist diese Zeile:\n", + "\n", + "```python\n", + "result = sum(5, 6)\n", + "```\n", + "\n", + "Wir können z.B. einer Variable den Rückgabewert einer Funktion zuweisen. \n", + "\n", + "Das `return`-Keyword gibt den Wert zurück, der rechts neben ihm steht und bricht die weitere Ausführung der Funktion ab." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funktionen dokumentieren\n", + "\n", + "Es können noch einige zusätzliche Informationen bei der Definition angegeben werden wie beispielsweise\n", + "* ein DocString (Beschreibung der Funktion),\n", + "* der `return`-Typ\n", + "* sowie die Typen der Argumente.\n", + "\n", + "Die Funktionen von oben könnten also wie folgt dokumentiert werden:" ] }, { @@ -66,12 +162,21 @@ "outputs": [], "source": [ "def print_hello() -> None:\n", - " \"\"\"Prints 'Hello' to the console\"\"\"\n", + " \"\"\"Prints 'Hello' into the console\"\"\"\n", " print(\"Hello\")\n", "\n", "\n", "def sum(i: int, j: int) -> int:\n", - " \"\"\"Returns the sum of i and j\"\"\"\n", + " \"\"\"\n", + " Returns the sum of two numbers.\n", + " \n", + " Parameters:\n", + " i (int): the first number to be added\n", + " j (int): the second number to be added\n", + "\n", + " Returns:\n", + " int: the sum of i and j\n", + " \"\"\"\n", " return i + j" ] }, @@ -80,18 +185,36 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dies ist aber nur eine Information und hat keinen Einfluss auf das Programm oder den Compiler!\n", - "Der Funktionaufruf `sum(1, \"green\")` würde ausgeführt und das Programm einen Fehler werfen!\n", - "Daher ist es von Vorteil, Docstrings sowie Paremeter und Rückgabetypen anzugeben, um während dem Code Schreiben mögliche Fehler besser zu erkennen.\n", - "Durch hovern über die Methode sind diese Informationen ersichtlich.\n", + "Dies ist aber nur eine Information für die Entwickler und hat keinen Einfluss auf das Programm!\n", + "\n", + "Wenn wir die Funktion `sum` z.B. als `sum(1, \"green\")` aufrufen würden, dann würde das Programm zur Laufzeit einen Fehler werfen!\n", + "Grund hierfür ist, dass diese Funktion nur mit Zahlen umgehen kann.\n", + "\n", + "Daher ist es von Vorteil, DocStrings sowie Argumente und Rückgabetypen anzugeben, um während des Schreibens von Code mögliche Fehler besser zu erkennen.\n", + "\n", + "In vielen Entwicklungumgebungen wie VS Code oder PyCharm sind diese diese Informationen ersichtlich, während du eine Methode auswählst oder mit der Maus über sie fährst.\n", "\n", "Eine Liste mit Datentypen in Python gibt es hier: https://www.w3schools.com/python/python_datatypes.asp" ] } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" }, "orig_nbformat": 4 }, From 0f5357e5046c136172c783f8fe3b7cb1eb38fa10 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Thu, 11 May 2023 11:32:04 +0200 Subject: [PATCH 45/70] example with zahl3 --- docs/01_basics/011_Typen.ipynb | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/01_basics/011_Typen.ipynb b/docs/01_basics/011_Typen.ipynb index 13bea7d..6443c8d 100644 --- a/docs/01_basics/011_Typen.ipynb +++ b/docs/01_basics/011_Typen.ipynb @@ -48,18 +48,25 @@ "print(zahl3) # Output: 3" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Im obigen Beispiel haben wir folgendes in der Variable `my_int4` gespeichert:\n", + "Im obigen Beispiel haben wir folgendes in der Variable `zahl3` gespeichert:\n", "\n", "```python\n", - "my_int4 = 1 + 2\n", + "zahl3 = 1 + 2\n", "```\n", "\n", - "Folglich führt `print(my_int4)` zu folgender Ausgabe:\n", + "Folglich führt `print(zahl3)` zu folgender Ausgabe:\n", "```\n", "3\n", "```\n", @@ -102,7 +109,7 @@ "\n", "Und das ist auch das Praktische an Python! In anderen Programmiersprachen hättest du eine abgerundete Ganzzahl erhalten. Daher musst du dich in Python nicht zwingend mit den verschiedenen Zahlen-Typen auseinander setzen.\n", "\n", - "Lass' und diese trotzdem rasch anschauen:\n", + "Lasse uns diese trotzdem rasch anschauen:\n", "\n", "* Ganzzahlen sind `int`s.\n", "* Fliesskommazahlen sind meistens `float`.\n", From 9317059aa3ca815464059744c1b20d7416b2e1cf Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Thu, 11 May 2023 11:39:50 +0200 Subject: [PATCH 46/70] removed casting from string to string --- docs/01_basics/011_Typen.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/01_basics/011_Typen.ipynb b/docs/01_basics/011_Typen.ipynb index 6443c8d..d113fdb 100644 --- a/docs/01_basics/011_Typen.ipynb +++ b/docs/01_basics/011_Typen.ipynb @@ -229,7 +229,7 @@ "metadata": {}, "outputs": [], "source": [ - "print('my_number is \"' + str(my_number) + '\" and my_string is \"' + str(my_string) + '\"')" + "print('my_number is \"' + str(my_number) + '\" and my_string is \"' + my_string + '\"')" ] }, { @@ -237,7 +237,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Möchtest du bei einer String-Variable angeben, dass es sich dabei um einen String handelt, dann kannst du das wie folgt tun:" + "Möchtest du bei einer String-Variable angeben, dass es sich dabei um einen String handelt, dann kannst du mit der Typangabe `: str` tun:" ] }, { From 9ad432aeed33ac0202d4e5a8381bf6f1b703b1fb Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 16 May 2023 12:23:38 +0200 Subject: [PATCH 47/70] theory: project structure --- docs/07_project_structure/07_1_poetry.ipynb | 84 +++++++++++++ .../07_2_new_project.ipynb | 98 +++++++++++++++ .../07_3_dependencies.ipynb | 115 ++++++++++++++++++ .../07_4_run_project.ipynb | 0 .../2_vscode_create_launch_json.png | Bin 0 -> 180237 bytes .../3_vscode_create_python_launch.png | Bin 0 -> 19211 bytes .../poetry_configure_python_interpreter.png | Bin 0 -> 158324 bytes 7 files changed, 297 insertions(+) create mode 100644 docs/07_project_structure/07_1_poetry.ipynb create mode 100644 docs/07_project_structure/07_2_new_project.ipynb create mode 100644 docs/07_project_structure/07_3_dependencies.ipynb create mode 100644 docs/07_project_structure/07_4_run_project.ipynb create mode 100644 docs/07_project_structure/2_vscode_create_launch_json.png create mode 100644 docs/07_project_structure/3_vscode_create_python_launch.png create mode 100644 docs/07_project_structure/poetry_configure_python_interpreter.png diff --git a/docs/07_project_structure/07_1_poetry.ipynb b/docs/07_project_structure/07_1_poetry.ipynb new file mode 100644 index 0000000..284c2b8 --- /dev/null +++ b/docs/07_project_structure/07_1_poetry.ipynb @@ -0,0 +1,84 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Poetry\n", + "\n", + "Python setzt keine bestimmte Ordnerstruktur voraus. Zusätzlich ist die Angabe verwendeten Dependencies (Modulen/Packages) keine Pflicht und auch nicht standardisiert.\n", + "\n", + "Hier kommt Poetry ins Spiel: Poetry adressiert diese Themen als All-in-One-System, um Python-Projekte zu managen.\n", + "Ähnlich wie NPM, Angular, Spring (initializr) oder Dart/Flutter bietet Poetry ein Tool an, mit welchem du ein neues Projekt generieren kannst." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poetry installieren\n", + "\n", + "Die Installation ist hier beschrieben: https://python-poetry.org/docs/#installing-with-the-official-installer\n", + "\n", + "Zusammengefasst, kannst du es wie folgt installieren unter Windows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "powershell" + } + }, + "outputs": [], + "source": [ + "(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unter Linux und macOS kannst du es mit folgendem Befehl installieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!curl -sSL https://install.python-poetry.org | python3 -\n", + "\n", + "# oder unter macOS, wenn das erste nicht funktioniert:\n", + "# brew install poetry" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/07_project_structure/07_2_new_project.ipynb b/docs/07_project_structure/07_2_new_project.ipynb new file mode 100644 index 0000000..3ce5cfb --- /dev/null +++ b/docs/07_project_structure/07_2_new_project.ipynb @@ -0,0 +1,98 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Neues Projekt aufsetzen" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Projekt-Struktur variiert von Projekt zu Projekt teilweise sehr.\n", + "\n", + "Wenn du ein neues Projekt mit Poetry erstellen lässt, dann wird eine Projekt-Struktur erstellt, die sehr an diejenige anderer Programmiersprache erinnert.\n", + "\n", + "Um ein neues Projekt zu generieren, gib bitte folgendes in der Konsole ein, wobei du natürlich den Projektnamen deines neuen Projekts eingibst:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!poetry new --src " + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dieser Befehl hat dir folgende Ordner-Struktur erstellt:\n", + "\n", + "```\n", + "\n", + "├── pyproject.toml\n", + "├── README.md\n", + "├── src\n", + "│ └── \n", + "│ └── __init__.py\n", + "└── tests\n", + " └── __init__.py\n", + "```\n", + "\n", + "Interessant ist, welche Ordner der Befehl erstellt hat:\n", + "* src/: Hier schreibst du deinen eigentlichen Code rein.\n", + "* tests: In diesem Ordner kannst du (Unit-)Tests schreiben.\n", + "\n", + "Was aber zentral für ein Poetry-Projekt ist, ist, dass es eine Datei `pyproject.toml` erstellt hat.\n", + "* In dieser Datei konfigurierst du das Projekt\n", + "* und gibst an, welche externen Packages (Dependencies) dein Projekt benötigt.\n", + "\n", + "Schau dir am besten gleich diese Datei an:\n", + "\n", + "```ini\n", + "[tool.poetry]\n", + "name = \"\"\n", + "version = \"0.1.0\"\n", + "description = \"\"\n", + "authors = [\"Vorname Nachname \"]\n", + "readme = \"README.md\"\n", + "packages = [{include = \"demo\", from = \"src\"}]\n", + "\n", + "[tool.poetry.dependencies]\n", + "python = \"^3.11\"\n", + "\n", + "\n", + "[build-system]\n", + "requires = [\"poetry-core\"]\n", + "build-backend = \"poetry.core.masonry.api\"\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine detailliertere Anleitung findest du hier:\n", + "\n", + "https://python-poetry.org/docs/basic-usage/" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/07_project_structure/07_3_dependencies.ipynb b/docs/07_project_structure/07_3_dependencies.ipynb new file mode 100644 index 0000000..efc7e81 --- /dev/null +++ b/docs/07_project_structure/07_3_dependencies.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dependencies\n", + "Benötigt dein Projekt eine Abhängigkeit (Dependency/ein anderes Python-Päcklein/-Bibliotheke), dann kannst du diese mit folgendem Befehl hinzufügen. Im folgenden Beispiel fügen wir das Python-Päcklein \"requests\" hinzu:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!poetry add requests" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dieser Befehl lädt die Dependency herunter und spezifiziert diese Abhängigkeit (inkl. der Version) in der Datei `pyproject.toml`:\n", + "\n", + "```ini\n", + "[tool.poetry.dependencies]\n", + "python = \"^3.11\"\n", + "requests = \"^2.30.0\"\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Von nun an kannst du das Package `requests` verwenden, aber nur in deinem Projekt! Diese Dependency ist nur in deinem Projekt verfügbar, weil Poetry automatisch ein sogenanntes \"virtual environment\" erstellt und die Dependencies dort drin installiert. Ein Virtual Environment kannst du dir so vorstellen, dass eine Kopie der aktuellen Python-Version gemacht wird und zusammen mit den Projekt-Dependencies in einen Ordner kopiert wird. Das hat den Vorteil, dass du für jedes Projekt eine eigene Python-Version und verschiedene Dependency-Versionen besitzen kannst.\n", + "\n", + "Das kannst du gleich testen, ob das installieren geklappt hat, indem du versuchst, dein Projekt auszuführen.\n", + "\n", + "Hierfür kannst du mal versuchen, folgendes in `/src//__init__.py` einzugeben:\n", + "\n", + "```python\n", + "print(\"hello world\")\n", + "\n", + "r = requests.get('https://google.ch')\n", + "print(r.status_code)\n", + "print(r.content)\n", + "```\n", + "\n", + "Den Code kannst du dann mit folgendem Befehl ausführen:\n", + "```shell\n", + "poetry run python3 src//__init__.py\n", + "```\n", + "\n", + "Nun solltest du in der Konsole folgendes sehen:\n", + "```\n", + "hello world\n", + "200\n", + "```\n", + "\n", + "und der Seiten-Code (HTML) von google.ch." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bereits spezifizierte Dependencies installieren\n", + "\n", + "Um die Dependencies zu installieren, die im pyproject.toml spezifiziert sind, kannst du wie folgt tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!poetry install" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dependencies werden nicht von VS Code erkannt?\n", + "\n", + "Sollte der `import` bei dir unterstrichen sein mit der Meldung, dass es diese Dependency nicht kennt, dann musst du bei VS Code womöglich noch den Python-Interpreter ändern.\n", + "\n", + "Das kannst du wie folgt tun:\n", + "\n", + "![Interpreter ändern](./poetry_configure_python_interpreter.png)\n", + "\n", + "* Klicke bei VS Code ganz unten auf die Python-Version.\n", + "* Wähle nun die Python-Version aus, die das Projekt verwendet. Achte dabei darauf, dass es diejenige verwendet, die sich in deinem \"virtualenv\" befindet. In diesem Fall war es diese Version, die \"virtualenvs\" im Dateipfad hatte (bzw. der Name eine zufällige Textfolge besitzt).\n", + "\n", + "Nun sollte auch VS Code deinen `import` korrekt erkennen." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/07_project_structure/07_4_run_project.ipynb b/docs/07_project_structure/07_4_run_project.ipynb new file mode 100644 index 0000000..e69de29 diff --git a/docs/07_project_structure/2_vscode_create_launch_json.png b/docs/07_project_structure/2_vscode_create_launch_json.png new file mode 100644 index 0000000000000000000000000000000000000000..2183462334146f5753d8001dde557e9beb8a76f7 GIT binary patch literal 180237 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

lv$`y|K%2=r8gZUFybzQQ=YCbZ_?5W?@ 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

pM^q`vz|nQg;^#BBdvkYa$#8cYOPOV8y7`Zn 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

h>1aTf9E`AR0}NSW3#HbYw`Lf(LP*^mu!<)rag` z0ZlHnWNc2{Q@9~0)+bR}s4jSQuJ*YiN*C;j7itkPmgR(%A&$7->TolkSme^l6r9H< zS+Mn`v^kQpz-yP-f z+`zMbOsTo4iF;|`$9UA=3jTkAjkM60`FG}{gI`JX?gmv zD{^u6btr+S;mdrZN4szA92^`pZ2nA(4rZt@pG;$M^2@KI1`2Mu&rX?C1*5R;&Hpq1 zjbrYhepT`@(I1ihQOl5`8{aDIa_>OGW?#D-eiPV|;M_zl(&ZJpJR-Kd-%cDl=5|9tAwpu-GmU=E8k>Q?$64F1&Nuj3PzP1-N;>9laqM+zU~i> zKH;?6VII^t4ks(@V_{Y;&8ifGZJlJ6D3QXE@i;botc0kWu(OCZ>75wvonebZDyjM_Zez#m4A9VHlULq#&e=_NUypYKXB( zyG(3t8ZSYYUY9u%<4kb?}}o^>$X9F@Z%vnW!~f|eZqfg{$63fs0Z;qpq{-9c}Io;S%Du@ z6^%K%6o|hHoX)=SxFk>&nophi0ONpu6x((a3fK=XT=WdszmteR?zi^+N2#dI2@C!b zOr^B$^}}TFDaz(Tpo-DcPu`9~DSmkRh}dggaWxoKCo5XTNI{u*X)CDRYSt~x(6#1i zJsK3@uz%%)SwYn9uSbC#Kp5^Tx0%xX+!IOo{a(>I$@Ts0ALGt6?LsVzXH@liZRf=8 zidZTSJNwE6Oj>auxlXT?UTg}FNc96HgIXlwVh}mc+`tazg|YF{_O7%vdfgVQ2l@Qz z)1_-ldr#~=YJTkRQV(4-V4jMU_`bGGn8F))T}0_!cr_^{o7Tyb>p%27J)e)=$V(js@4Rwn6*klXh3P;yd|gF}bC_TUFZ*Pm8;06u z$YCPjx$AUPcE=hTOjZkIs@OA5@Ym^FU5CZ+I}d3jdK9L=|KZ?!!$+N{2a&uSnl}TN zI8Sa%Ydxq$Sd}6xB|F|Q{Oh$DiVVumCmpP}md)Ut^H@2x^RK0fF-%{W6+?VQGGdO- zO}B1OXIJ)?cAeJFbUrd2Wse;VRnkxAvNnH5+(=BJjJnh%%IaMu{)4Mwqan6p_QvLY zMp=JpsB|8>$A=a7^$Dt*hzW4%cb!Vqm3B$$4jN$e-4FTC?=F2ejeA|=b$$jUrCUnj z;aN`tn#x+6T-u#ci9iQP#3zaP6z}{L!PB#E9v+*C+N$a6KNxsh%dx5a>ebD14Ru{z&Rz%bTK^s1pVeCy zU{pP+23zaZB(B>Wmxq$|c$%acj>gL*!a_pIKZQO&uQx*8$sa2SZg#ucVOSAq(ix=y z$lnxr{*pW$8a287EHfuxM>~ToDoTeUke~lCwdC9PT_QdoZ*PrM9roKyNR}TrOG#dv zTv>>~Fp@@W<%h(L(R6D_dXaT*z!WZCxyrTtq|)nL^ub5!J72H8qJ3`lBF@6brZl>1 z%7F*Slv`hZm$p>JsGEee4Ox zKO2A2F;4yfCaJcLLpI%hZi{P&B!K(&B#0qFjrXI*x!YHU^`Kg=Np#UxBm+(okhvF*TBm14lICmSh5f49jS$yF>PO)N;0nxmoR$y2tt)0LWYfX7NTuTzFVW8@*!rcp!N*iFy2eaOJ!}~*^^AP*woN) zVknJ<(d?F+P&y%#vjYj{5{4V4S8qGnQNS`SQXi^-sJHiX`kik7&%{hh$|yzGuk)GX zl?LZNzcrKFJmQYgt&${&i_RazhZGdfS&|J9OE|p?V)uK^iSrE?XJ(!+Zf>4sW@mHK zhpVcR^_?TKoLyWzLryOb`O`_o<5Yb8GTb~Yg7ir4d}^$xt2OLKDC;PWE6tPdrBApt z`+*bu6gTm2Ub|=!VRq>+-8HQ#@^<)l=Rf@&zwY(by2@!pkwaF5^YQeCv=&3JhO~Zt znbcyL(KrK+!+xS(s@Ji{S)!$CnO5EdhISc41QGL(L(v10oN~g8v`NCkLL?gIRu;J% zO$LS61vyDbv_|^Pr+IafTXLzfGg>j+AK7N$7 zXgI@M&!k82BuwEFnn~qn1L3Dg#!L8*vrKc7irfW5M(s@Z8Ap99AH&$gkWe%v< z%*W{w2CHp{RIO-)jV^9wZon2^0;b`LvXjS3>CkcQ`HU}frN_bdEYq$@HOwJHiPh2e zWdm8+wCIlZ+lM+jnSt5;gG0elek@a;zoqrgv-in3Z03mmG3$BZ4lhM6YbU46mpI9t zR9Guy{aNeP^h9#VmN=SBa|mPn>{X4-k;a=`V6wwltR8uaJk>w-d_L}u=&v}xnffZ! zQ2WVo%IF0_GN6j73n!cg2U^CUB(R_Ymd`Dqde4f z^bbA62x<+N;U=$$fWRLzgk?>2_2l8f0eyR1Q`__PHwL#@zW>x-be8*Pd~sz3?H%!` zSn9b{oA2u*qLdUT97OZ}AF@1Z&ax{!w$F#Qcdwr4-3?*y!9ihcuL*IV_Du|4J4??+ zp;4^pubsthM}H|=b0rRYP^Vw=PEt}lpPsyZ(+idok)d`y7q+3N^yNo$p=)m3GZGmJ zd$o;|zt&2}zs{90V65wFPNryf_1SLT+{bA2Zc~lkyvA)7VfJ+FmVdS_(V{#+h5p0e zsiP_*TO%=TDp~PQ;!9(c31gHg*|zw@8ad~&MS(aL?9zD-U%e<>G{%p0LeJ*z-r+gM z<)vb;RW6P%`5vyLZw|!XH~$j`g`1H}}C9=Yr8DtQ1>2Ce%`Ta6aO$M}Ggt z+WV+HJ&ov`c3PznhY{yD{?qdE>JW}>i;RkrC$s{0`J<{mPR)~(1#)%JQG+=;4|I6A ztS75K9Bgtys4lSk?;omVG0&v)1M3}uQxTi-1mFW-s1O!sjS!ZR4fai^$~D~Te(OJA z+4}33A31qQMn;7?qJmX9mQs2e9>EQTF!{Xom86?;48gL$PsT#H*$k;!vz^(SB_KZ9 z-QQ0J_Ogoo<4lCNa-5h<1h?Ug@pyve+ZYi1^tFCV&&#Mh65$~^+Sm<%W|c=TVIsWbv!q}c^H{8DQX)VD+s$7 zH!RsUn{af*NyM+2UlkRr3<*?5$#pdrB9d@qn<`3#E=skIMd{)X%1Al7ZH8}*a854( zj?OXHAPq*e!fJ)N|L+VG;w_);!E=PKD{g;(-y?WTxkQJ{^UQ;q$M!`8uH=1r?lV=C zl;Khrf~|bp#j--k+0}Jxc7A?OL`zGn+GtdDj5X|d;&)F^p^vZcBeJ~s1wG}Jai*C) zf&}?~>Uxn9)YMrY!8Fm)MGut(<;~hH^*)-F58_vgljB3&kBNwM=#OANtKlFfk@E`s%y%dT6N!5OrLcwX2EtxPz z(`!w-dKMXG9p({cEb&j%fN%NqpvT9=!L`sc&Qr}}B3`P`HK@kzIz?u=%a=x`;@vmV zhXkb5!Xy1Z9em+}3Z*vSj|{#;E3_!AaT@)QSO`#;(vEgH?0Yas#2`UW!c*7TriV`v+IsUp4MqljfF>cQE^h&;CvKyYuBsw@Spf6q8 zwh{5|Te5)lD8=LN&qSG!P&}M-f)EmN5z@KexDBf1pfi#B<+prr_;ngerA_*{d8qaR zj4dHx{LO1~eA=k+IGI=Ozwz6NE>S(*3IJ)=><1F3^<}=%^8AlQM|b5425>I9I3#KS z?Ge^Uf3??I$HshLyqGhiG9)1vM^fMr*S=jK)}KDWwo|Z)gkMW7E$!s&g(xuXC7mNk z>`&#hcy-=3y?INJL({k<%U|eM#hR;K8ot^plegA`Yr&iS~e^%bjpj z&9vr@*45Uy9w0n%*Xig&em=&l_^6ntw!j_6u8*qsdKCb<*)CuxxzliEVzk_rOs-rg z22K|#C@0fb*u91UEMe&C{9OfEx?RKfnuj1#| zt$!l@U1LCqiI3_jJk5+*=y5wII_3cWcwh82ev)Kxwcm~gquJ?k|M~bR!o85}pwZ*! zPB&q{pJ6KJHL|?m*vt_V#_KzPr17%v1SQR`ZEUXRjWM(q9!Hy+@jnmB=jhY5B&ZllX$O zzlhfypKFL?+B`zf2Fcvc%28;9T= z(~RwAT!Kd9&+s@(n>YYxpMr5SaD z_-HNZSMF_@Wwr0%DtUwaZvIrojSv%{Gv2BnTOYssB~Y1>fx!^DP+3tClAkXnBijs^ zaPiC(r*f3x&Yu%SMMc24D2-jjS5aDDM?^LON$u{#*>GK-M%ae-x9uu z@WcNAL%1{Lc*%}tQ6=ZnQgwChhb!hQp&`}Jq^lF3U#6fXm%WkL(M(J>#WMK8-p@F7 zQ~nBjEg_l=&~Is#m0}!Y`m(Rb&-?rJLqlWk+rOo2Wsk<6{>);4dVfs-@lo#G2jmim zoq+16Z)h*RozE0Bmmk-9zMEfNd<^!ElvkXZeJ39juw!RvJ^L@R=#Le?G*3la+9Zk@ zTi9q=zOV=u|J}mUQ*V?4YnKOFKuLBTZI1V}IPSH~_n1h0;A``C3ORnJ?VYzvSB6<$ zNk2ar001^>Uaty?OVG~1|1#1iaVA5WnfcpGHMO?;BqRej;P_sX+n3?Ly-JAS3jscb zE*okfEPJq5_7Tu4*8uU7FOE1t zS51q@;tEP6#NV<)7U`Kh_yujS`*-q1dm)eXSpVMQu{vsJP&)602QSs(1v_s4t*3oE zM6FEwltc3?3(V4BI3Db-#`iN@E%~?knL;~9UpVlxqYag1%A^swwct>jzD7se+VRWp z1lNZ>q#575Lk=aA%lWv{%Q@d)wbI)wm5> zDc-Y_+W7eRC-|YqBRJdOMas%97wMJGJq6|Jx)(Cm|wueP9Awb?_x%DmH>kk+ZVnBd`_O9?+A^GlKuNOPgPRM^IoD{9Vzj}E6u|c z)LbEs3h4aQ)GBrX0YBA{Z|t|kK4M?M7hEWKj2U7Wrf;C;cYkvP3y<>~h#@EnKz%SA z#@$59%Y;>BA6)K||0LzG;wTNOM1M_@wW zQB)fBr~>6iQ$X6<_z_2Gsa#iSA>D&HH~(8oQTMS>`R~O`y-7C@N}eZQ88S^k)vCDT zbT07yWjD%uf!}S7j4HRbrRI@7SkX(4%#Ngj-*z`8hSXxyE}}b!5T~#FexzTDKXk@9 z7=h_hl6G-T9+Gq=-l3Hj6Hzww4(K7E*T3&K^yZlk}{?A;&8A zxhD+$e!jlV@guec9TjOO6=@v9tiz8aBqY`&|G)C+qfiX3CCtjC-djo1Y#NT*?uO91A`b#JoQ6TZeOYt;sw#kQ3X4gbU!@209UIGwSNML;3 zQMCs~NnW8X;r)A-;GC-GzX)LMlr%kk3HtoLat#w&YOI}(>kUK(d8xT$E8$cU;ExTgp)xvJQG9r*6uJqr55&vnWvC3{Zv4_Mad$xo5Di7R*|nAhAt=b|K$ z%AO?eOum4}{!8LaFit1FbcIdKd^E&m^1Zy6Q^_eOiq3?;2}NJvPRNT<>updf;@pnx)y=3<6d#`(~-#SLqVQ?^Nh3;%j zmNI7)l;oW?8w;)(R{iNJpHHWOVN1T&!_u2~3%h_&e&Ul{G_BYpNIi%+uv%N|m!+9Q z{X09@ZzbQID3-eq-sF0`9TAZ)_Q$sivj*DP8`|&w@RNnF@|raHX!ia%$Lta!sJ1W9 z9olNH!;X#wKA>i0UCqmoNQ}6EKzZS;WEJ5Qa!((xapyrp2*WSa-E^z`&YuQd7zJ&3^hzNEIP$I2W1>XRKgbLv{w zUi3-_Ps%`ATiF||!S;dC1qYm*E62#^mVtqR?DzgjHy|R>Z9d0zjBSyPbAcQ4H8dhv zn~6=6&{@*a1mW`3e#UNh%(vp=&G6al&ePMN;OzL(Xl_oC}7n46S zUw+8;Hsb+Q6MvxRdt~?`I+-}#rGD<_hz6XiKcpGw{~=hWS#fMu^WW#zd%dl+v{e52 z*^9;LjLq7pv2h8?Yl?NJ=;c4sa(KPlv)8Fk9bb}DItw0(YSP&?q`t7-!~-^spM`D8 z*1&_Fb@9`p=th!Ag)nW>9TTcj@-5D8_=`L@ea1e_6Kfi_9s4@vO9D@(Zfh81vvwWP zdhwGb_5tBqO=DJEQBhH0RP@N`sA4Aw@`H8p@Q)98g?V|Oj&JRiA%=&AZF*`QK331Z zMuepz32cPK#eo;=>s!!r@b|aF>*o(w(9}<{FxwzW=mzTR>Rp!eRM-0Y`tmC(ZXNvl z=csi*G79`>P=I3QRd>^B$88_i*)_#KjhY@WNX8D1(#2ikK(_GlM44GWC@|CoveM*0 zPfu`TlRqaL8wjIWv zl|DrG^_CvfrzWGL9?~%g_qGmNwzmE_Hah|>5gJKlt4>WvpjN>rSi?1$h#u&iiKq1*zj)^$R~!jDA^15O(nJa6})3hZV-# z-46Yw3NQO}uCG6EWVq1kZlp41tPSbvIezifW!jTy-CqzhEu<2JF-(bvXO9ax#7Wk$3~OfYwxaf#!nx0qe0oQ@8x(N;dl z?+yQ&>ik9>Nc|*-LMy5d>@03UabUFy>b3yU2Qg%2%~t%*t7A<_7+#Q-^%zm35_R_* zd8hWEi)d@p*(cms>C}WY1+}hJu88y1_1xSedQn%iiP(l<>RkKz$75sXYXCV0<9!aw zS=hl>3`K>#sw(Fx9=49W`EBH*zdJihb|;1aovTJKCi%?R7^Zhniyla$#?K1lH*4l) zUgGnM$ZRzqw)Ow5vZ>MBe1)wF^uZ6t#&cdx0_`2`gqdD}mf5Pf&Hm@L;vK+ZxYqkc z*zdx&d$n?^hUbGv?whAR%5Wb$Tc13HLINAuPmNm=2?YS}8$~l$*hSs0qhB9HE{WGf ztIBF18?0NxMvZGaj%61{j1pg@^iaJ>8QJ=Jez6!}O=_ z5}md&UF~sAv~_MV!Q3bT&E#!^w#?CUj8>ZI&SAgQE)jI?T(7+Oa|`Xm*V`en%CE9D zdmr?IuZ#WD0Tu~re>$;%2bzmln(2~hpsI=wv7`h_F2nTfeh+o&<@A2~sPxpWgyiwc zrUUUe?h3AmHzioVLib^UgyK|t_sPBjjp&cBDf@67G>-L@2KS?3yE}nAwL3w`-I#4H zMyI}`ny zICPPbszn`=Y@7WlGD%dt#!rrWUJRzV(__!lQ;^+nwU5B-f7cvfZCopJx7VR(67PK3 z0Fe^=x(V6%7;((<2(yJs#Gb>$1m>Fa%Mlv38aH3HE}Fr5O)v|1H+u7`ua6J^%J{;} zjIRI^>E1EWTJGZM$+WYybRdfiToJNAXV%e?W5(${+S@w`nZsI5*$ku5ZH<#O|9%)a zJsXXw^CwsCW}j$Ccv0+bv1_hhrESR%X~aTwX0+fHU!@Z@;-M8V^I9$g?gz4gOoF3gBuTjeZF&2`HM8R5rSj z7+xSnd(k8lK7GQ}i=%qH0Se5|p^&Or<&I|XxgyixIdUP?7}L|>>6^nR&ma6wS&V&w zFRq1%rv0+SaSlHqEU31RR_(?~_T4il7h#ZmqNy2d17cMyFRA5(N!NtRGgT3R2rB5E z4vzbT1*39;$O(zF}J^9*~fA*}P2aoF75_ z5E!!0IyV)>h(eO6{=aKm>QKL4leg=$`IoR?IREgVxY*B)%*+Nl`?G%iQY45D$%HhE z3OF&jF8M?6l^fSY&Cbf)^pL<{%^uq+lT5IuzUxcuMWv;=Zn7#*+=y`SaFFt-I;yR3 zs!JGW$iqcIVF;_9JC|g><1Yz6Bib&WS2^{@na#M{-QQ2{%$cc>1E2w7e22bI3t;ap zWLnkV@cR2<*?jmw&IgPMY-m_NgRloo$Ck-pCgKi$eFb=T5c4D)-2?K`Y%FV}7%?3< zXdrMTw3?uAdYT88Jaee~0o-2+mwoLCEnE0O>(f7dCjW!bm)BPdyrOr7x)&x#{qloy z>y=9@B?d0*!bgp1{GkQmvRVKrkq6I!QenmX8$QDq7Za6z2FWQUhX?i&6r^@6C-hhv z>eS!R$va40{aH$BYNji$j9HI+ z^w;9x97D-Mbz(G0LM%$u9cYkR18fIj8;~8pna*9&_0trTtYvpPe~Da;3VA0}s!}h9 zpQhz%43?HmcfwDd3BURRvH#ii+0#;4n{#++c_49b=?Mmb>Ukmh0abPF8;VlJr!?np z_?qNY<+T4GAa8yiY&PXGrN9E`qCF^nbbv};RZgxYzpl*G1rGNOo)MFgmNvy@TVGt< z&iBwDTO!wg>638&CUeYoqRR8YmG7L_=sijji3{KFT|@`t%Q49= zqT9l6-la1Yui6e9FNkKxldm}=@kry`Ea9rs@B<3+^B-6xTSDN_nDy3K4!N}vwB490tECfML+@K|?%6G55?|@4 zXQy^DFGPf?1p-CD<`v$rACH>A`ulnWC_-~o1He3Or`12k9ydO=OC6fy%Tr{7Nq6O@ z0{uS-N?lPWO0F!#8l+vap$=bsBFKoX?^95au6nl>bd5pM%|PB)zs#8O=?>`0DXcAv za&!2K<0YpszcD; z$)RI!FWvs@SEwv=pBNvjZflSG(b1Cl&9(@v0z)axBPioMG4b1!xUGbom2q>@R=zlX z$*JWUu5$_Vaq(e_1~fegYVuR#JG0hiE%HzfaK;m<_-gZkF@FS<489$XU;p^e5;0!u zv8yYK2sbF%K#EL8;&geY`=%JdB;BHD<}wYV_9#;sdFFkHCZsTovXx?iOKa+TTJ7$W zT(>f@h;OoAXN<+w!{w*3Cf1NuVLSZr^w2VyyCg0G(bZIjP zpXC*^gCvL%Mi4LRMPRMk5dOMg9pvvII)7z61o%-3qcmmo>nKX;atyo)C7wM*UaNaVF#Sy@>iHuffX<5HUjz&?F{o|!Z7;4ii!o*YBV zPCk(_IF@_+-$N}X7ovAv5~#M$gcM0G&PWb7Z{KBKz1hY4g^NtpZj-K{`IX!lm}ey&?KU=y7F8gD z2zKbyy*rfnncx1TVpD7~-By%s4*0u_)_(QpPW6X@XQnTeG=rl;{`CV>ove1KY9r2V zdXVP46Z?#!&!Ic9G(IJfAJN>q_0`Jy%^~W++ljJ=(+MfcQx~Y}ocN;RV$ebB@Babe zhuJRvrY<|c$RPhU`lH!AQ&)qON8T{l_Sk?%hU&DLYLoT&q$J=A^ereVQr|LaQ#K;5 zs4Yr4PSk(8z9X|FzDCNtP>NuKCOFQsM1B7JS;H5TsEZXn@COt)-(Xq+oiFyO&&EGm zNuLXG5k_gwGC3)Z=z$gmNT0aYMp*=v0YxUu4jx1~!rDubBHFS7Vg#)N5t;X^y+*1x zHp0qfj@S+#qCfKo{>?Uy-(>Br9QEFSwT+lh_1kVRjzT|tA~G7Qvfd44^7|M2?8de< z114#HV-AF4Anzk2PXG4cHwC2Fyq9I`&0=RbTcsQyJkkxty+Yn)|GAa@RCa*>>&UPU zTqpN?b6I7romOAk!vxR>ttM>Mm+O5Lp;;g_TY2AKYfkHm@W7T@(3W-~$ttE%HA05jsI^YYt3+sC z4i^pktu@d~CeP12K~yHirn$Q)shF|!IZkPgRd1?ILxcYA-7ZGV+a14@hu+*%lau>0 zI^+W?Q1o;pgTUe-_#PY5IbW#;z0}YuU$BRjHxEH1K`$(bAmdBYkTn?ilXWPR`|_@ogt+)cXz=%Kyh!k5G`=A6ip_wo8gB;7Qn~oz4q!_& zdGX&}8u;-)H{h8bkK66mnD1uLrSacN-gFVNs#1PNn6l2kx#O?4F+51glpLXglSf z+p*c5YZs@479i>OQ@_kKw+h{_JMyjVxsKs|b3^0L4Z&g#Ku01WiTb<#hh4`fTtj_* zFP8OxtfC+Ob#M&-Ov$@( zgJZ7DRs<_he!m08cbnBMZ&IEft!jT$KdHEWImho?&i0>>+x{$XY#1{%HF6}Pm_Sp2*6aVeU z+}`t`Sor+$F9q~1w==(?|Kjrnqe&y=?(OCGqtg*vcf0vGbC!nZvR)jIjqcNkama*A zI{cMfIg_vF-!T);Nt@9r-iv;R3WKh3Lqtjf%N6_JEg(-e5gcAD1+X}uR{M?Q$vHId z+0g@Ky%ZF0d&b7!y+g|id11^E)#QLiwjM;& zBFet=u2wsmhNJqH!#5$L5kf!2U+ow#pVpwnwRY@BjP;v!i-0+Rw%<*=OcpyIuWP6ZjLzhVu!DkR#*LS-jSn8>q=xvHm(xnpi?9I>kM&q%r%PdV2cd z&GtXMIGm_1@&1OgjrVRD$99J)>Q^I@t6UG240$^ExbG)kz~2AvYLDDXDyMMX`PDUI zbMdQ-kGaI6wUWDLn-Wf_H&!roKlDQ|UEROavrP$r?WpluIhttsBYAp**EC`B-Kyl@ zoG`A+OW>65CL})cp9#X6BVj?dr!o+T*RP=*V4axbyZSxsy?z7GN`FZ zzFs5YeY)@tPJb*$AV}>v87N=U=E-uJY)4@k?xM`c{Q@zQVf#jIR;)Ew{Jy*{D4-s2 zcR$Poeky`BkBw?tzi0@z_M)$Fl>K%`T*q`R&L~c!l=TkGu+o)SLK1cG6@QQ&eSdS6 z&8%U*?&5j4kV5HxGP`pV7k+!g@B{3x;X;obGGzUgA?pP%dl_hsqP;Uo7dG1J&c-Lo z$$L$XHgVxoW>{cJ>rwioH^Jw1yU3MF*>0Kf`AD^)!!0DvR<<+R6qWtiEiSZo!l6uz56igF z2EJ4lmTXS(hfmn%mpHDovz9s89)7JhG;@W+Ie^m!05-Erw(N^ain74!VQ7U%e+{7R zSoS>z=9}VU;-3Uuz5DxTT{Au1aDF1={rksU_wSqLAXZl?pR!|03)gR_iMzayc8RB} za{_Z3CqOB9Y(2>ZT?}D=4})Fg9=EY@N?VXCsdVb-99XHZR6-y`F}DkmfI*oH-Y?HA zEwjaywX_&>54@O##Q2*}#l@AKRcV+6-dij$y`4E`h)+xHx#Xj+SPuQn5kwE_t(yFZ zPft(dzkFej`f!!Aqn=$-au<4!Dq)Mt@@uLYCq%n79oGBC@~(@3vr~*urBy&_n+Y`Q6vJ}M17%s6*E`J&OFH708F3y5`=d8FtO^y+q?uD)oxWq3d z{7zK2Ia!wt$jQTrfMd$FtRedaw;kI_*cF5ZmqNmF{BBB%bEWE)2{M2cRp)){w#dg$ z@*1cYg$RBOx$>}`aArexuGVK%yQonNEVW*v6-C1%k3{^Ult-2Yw5Sf2+D!^a0LovFDU?@SCaTENmduQwEpFHyeZW*{O(5Emo6N= zJM<73X?kmP3WFT%A!sei!k-$6{M3uztBR#|cL(4c#*)}j0;SuOt|o8QUuB2 zZ?*^*rOGp(A}U1Ok60+_1f`h|c%-i(wOG7P#Pi%|$ag5|K!UIUIdey7Aab;?uQUVf z_USKf+-T7yV6AY)G;tYhSUR4v{j0}l@@R{mtk*%bb#`#@DFG1?cF5!}kLAiUy0<8@ z?gXDv_8SLk;lf8UVr4LnJvn8>KDVp>&v6VKBTL|45=5Y)t1@0+CjgQ>`T0tIy3Ym^ z*!d#wzInZM#Ft!rM%8Ol^8%4ZK!LYNZk_?#=gisjeC5PaPHfR@gK z9YQ#HXB`EIr)29nN9Xi7b%b^NEd>UUXmKq+i|?us;#;@w3pknW>t5f?J{3cu)w0di z-aS-B1qHX6Z^&itAxxovr&3brrkgGCfCZJy+_1F{AD@eYJXQ78pI8bS3iTiN{=~PU zAt#2v(0yH9-#{A^0cmt*MTIl4zhwgXFh0plKIlRwVufg)u>$P)c$MtKsMb;5-lsR_ zw+0OjE_Z8gB_-u&oY61spWNO4yWcGUMvyq2SMoKg-AXX$C&rD480Z~qEA-Q;^rq^D zl8E6EVXp-PaFJ6^#Qa3d%T)?6o3@5Slrb-!>)eYjRqYyMM{`#cz@9Cevgg|888kCS zjONc6GVmJ3 zDo*|OIc@J(RG?4x^V z^V_iPj`Fv>JgUXelCgVll-H`Kp7F zK!}H+MVn1Wt?fWRqH?7cR8L42QUZO)tu_D~EG=EGmzIw-&JY}Sv-382qbIVE(FB7j z{S>yPv?OMxUM9AD$@JS{+e#csJE*rqeXNiH$z+kCp1?xT3yMJI!1L>%Mmt}~vU79M zI8wD=DGZccepagI?|5_dzP%beu46O9T^`v!>`=P)NvQl`Al=*Tg`fE)@=XN&vF3^d zbWbV?4I>NY;V$-;Wy%C*=V5?k!ucBhceeK5E*9KHJ1pRlpl1_FZ%zKoD)hBytFe>Q zE(+)s;Zx09OJHA)|6rgeI8x7 zJTvUHjHiqjXLhy!eZUMiJ6nzSXbF-DZMI$>6K*AevsLKXa^-_)2ZKj?DH(hh(reOe zA##d?9r{lb;p%J`qg@F(bL)ZqooUuZ6hhnx!_*ZYIF2?Dy~QOFX!tkyB97Dfesf z|E(JeeXP)?^pj8LJt>onI`CxN?kp@UB}WL5xy{YWD5=}p8w=lR6n3Wu{hzU^JZ8dX zw{*n;!mDTYe+f)O%W-AJ7%ZMjSZD|*fi6H5z0MnWHhbz z>GOf2fl~IlBO;A?(HK~PSW2l%Z`Apkj@9ZLL2q(Y+M(``sso@tTlrt?cjlFYdIm9u zjP;W@=f~SWB&B&}FqbbfT0UpaR9bclnEGy)J_1iLBQ+m(NO2iFB!Vb z5tLlO`Bp{gdlnwo)579#o<@1QZcVz>J74|8EE@YW>sK}h2myHOu?k-A(Z7Gjiz_Q{ zcDJ_~S{)?LNd&NZ`<8d9Pz?XYO5g!jC#vw=7>7g?sgHZ$A5+DyJUNNQoW7y_CtfRghh}^i7bqaBE=u(C6^DyangK zA45eoVAvBh;A=Gp=S!8Sf+ka_)e`ah>S|PXpk=1zTE1r}TeAkNQZ0Bumd3H%u&`to z`p>BPmnqxlPoJE~-ljuVAglNM$#F*uS_25SI1wrcgyh-_L#e{JA|m&e7rl`<^=v zUhweQ5lOYp9}B}u3(BA%m5}A-{4)WQ=Eq6p#@}wF0231#j2)i0s~O~pqy#F&A$Bn} zCPq~jT%;b`lAy2SgX#hwKi8eYX7C4c0l_N#`7=b#%P9#MQHKNrLt6Xk=QuI=LR{B^ zTugLjdZK`t8Y81A>@I(K0mUNA8Tg#wI1b!eq+V~B6i6?JE)&-Y3-jnlcq+dj$z30Q z8S5IBGrldQt3>CbYV#2xD<&=;d-*-#q38VL*mOcw>P4PRdq_RFf@TuAH{n*RFWiCP zF#L%=ihxesYb|BoEKsKE9Gzhl2<)G%H@wFHu(KYu2F4J_gpc6!30mV|>)Z>3@<@f? z&W4tQZhEYG_wy$r=8KEDtjctFsmTU8DPM}adHKeOUvT%~vz@SXP5jh3gdq6i+=le! z+rg}QPsLh)`0OP7H5wS)DHzB(Y$=!DrzrYoksR3_87;!YCvj_t#Hj{3bV8thEM2Hi zyJDHTqc3G9s5U5$!gn>gk8dqXbF{>KcRes9a|YYgPM_P3c9!R>=buL`a+oaT{_*j$ z#5JDC-s7U12&-O{fTP3XXTc&3ywX`YA^yut zsc6BD$I$HrmuDS$d^~V^g#F=NCq{k5cktq4QLD?#i$a4oB=?PnCXH@tY%dq;{f!Vv z%N{0W##epJ-^P@=<^TT zykI!CDSffo4}V2E5UMdt00Cc~=3^?9{dx#vnh6>j8r4US9$9?pT*Qr5B9GR%-|@)- zlo9WLcf6IG!}xX`D1xxE!2fgQp=-wWO2N~t7+iUGFB#X)jH>=0SDpq_uim0DPOp+J z|DvG0g?5G1_Y5n!fq;Fd!1EcY%jVOL?#W-h6Y6hF@^ogtS}d3^;6WsO`!7~s>v(EI zn?UA!c$}dRKU;8EhO$l@dh##Q?WG@SCdq9Uh_XBq=yo(o#t~ zO4*fjUXWQ}Am0Sxjpd}LBv*+Qs-$S^QR7N|E5+nV9oPc5E<)(*dNJtO!QqG4UkPIl ze#d6J-RRrCJJM;ZRG~HQ?!?ueP7=Tp7PgGl58|9;6B5DY6Y~K$LBUR01UpQSwj12o zTmxneV5?YUDA90FOeTOekAQoXijKim!L^FfXKl#gYUPjJG1 z@X!1o6o3XmKyuku zsfkg}JC5JDQB}+_KP8R0snJ5u>bFPH0S`31xq!r+iGeu2gC1BRK}RAEeliGV#v0%8OeUb13><63tLDs zar-~_q^r8`w8im(%uPXU%+EEV)o<(7fgJCdVUD*iF$d^~&0 zTJxj;=!z5c+^{yd2(wLYzVqXQCW{OC9uH&=n7UYAiIr!DJg7RvZVfqH62}ka0&^u# zoEfyH-gUv)*cehqlc(spyxRW-H7ht4-bl>0Yx~zcee7gkH(n z@U-(7uudk^iFNa_X*cq>P|D6?4CyvxfA$K-QFN zfq)~MZ&OPuQ10nWk@@ziGv~_c%1umijV>zt1FegudyRYiFZ7WchFP0bJ1jIRcWcX- zd#))sEKCCjJJL62mdBswIm#2k2Mu6(Mv2&w+#y^vW*Y{Ejv%1M$w0mqk5A59vQ{4R zBa=#>r(EXcC4OO5rU@cBv-({$Aa^~xx*K@y8(79wLCREh1f8p0G&X2O0R{3p`4YbY z)c!EkH|_n@F!S6T*BrY}ebl2I@sI$p6SS+UbtVc&MUzS#I;7>}KmZ9hC;YW_&IRyN zMc=HgBcu9rj`p*kmW|bYRD9-JH_lY7R}x$q2|I*Y_49BpO7doh0Y^Y2lf5laKBGg< z-cAN0it4m(?3(W!dlUA@kXMt}#>-dV70;NT48jE+baZGHEo`PmbHxhQYWg^*w<+JKsUlawj)9!rSq`f-U$WSd4@zd z-t>)OyyjnB)r_~qC7(M%;S+1E#_4$1eZOXf3`;%Yl9G~Gf#v!6lbqF^{eS;vfA?gY zn3%}9xVoOvlPS43fb;SlhS)))F}MRz)^z&fy2#h)1LFeg3=1<0vv=N?dTEsxoF@;; zqGt|gValJh_t28ZB#flg$Jod6rq{K>!FY_aIy%vfbyrgRRX@V)Hhtv1(s!3Cg6z(C1ogVR`oR%BfivT+D(WXJs1OwJ*yT7F&DLDJUrw zzPy}baip4f0g5iVU&9JEbp?@2Z=xq&+PRSNS8b->js}q_mL=cMvXzT@G0|vL?`4Le`q| z%Cvfa2wM*fgHi_^5C=GRsQ27$cBG0^9ceel-nuA%kAh4w;S1^)k3|7n^aH@kFzwb_ zegg@{OxA#K19WR2#2m~H(Gw^4K9Z}d$qX-9w_l%}oJenjwBa4(CuxDa%DG9S$v4u} zbd#Eme#!n6tKM!OXBKjXJWZ}$WP&I0CLu07Qw>uReogpWM~!Lh(Q5hu{1!C?A!XjDc4qqH zOD6XJ*MpLxRfDPDfp}H61DEsD=xo$h{?x$bia?-u?s<~gG2;XK$;oHgnxZKwM(l*eQxmlF%bU?zZa$0f&g$x*u&vZ9azsN231AeiCG?bI(g?# zit@>5wEDyjxv+>(tJO3IT(NMC8Ey9TKq(mSs5N-x>S}88nbbMIW1PLF!hH_VLpV^w z#Q3c|2B{HFQT|vKR!dHP{&%&GbN7c`goRPj5~v$%2v9`h6VfzkX=xi}KLdE>fH<_41J~E@ zZgu#=u#W$H@6QcH=oh8JA)65f@G1-}%W$_~PI_Ns@7cfX8aM!QWseF0DxzrQITbgv2&yM?4{W@`U#Qn4>qqjyzwFdvnvc zI7@q(99BlNS-twt2mm2ka9mqR zmzUBl=d{Y0pesvPitRe)PYWP_V;viR1>p2S!b&1q?!0>CXp=FJ;~-#@a<2%ssFjH zoB2-hmYK8=5?L#8=_)DUWM#Ivg16PSg{`fv4Qc3T?8AG&pu2%#kzYf=v9Pcf{$Vh? zU2t=v0Xz=JZ_w@^CzF#)|`^GUdbi3PvBiM21Qu4r-x=S& zZtU-!waquQ^zEIt+PbV1}L$tzspkqS>ggh8)Rcv7(uu? zP9rD8d`<$g7Zl_~=Kpw_=jNqUSlF-zVM2E&@JJHv89_;I=#P+>^z@_zg95;P6?baz z%}-NSHXvv0EUqOG!X)*c>~kEBfswARLT3~cb?Yub;H-7@rOujCXGAkf@td3H96N?Z zEbZ^#7xN?qnuv~#mpD5cJH9FsGZ8MbL_O2j7eKV}Nt+@fF0p`< z=I-s=ig)g$+7L#+xf8fBI4BR$k~uwo{;I4X>c9vH4yonH(|S5Oy7oH9ksoOU@};fc zDqy;nGCQQh&trRwj`lf%Bm1lEr_^JWr2>BDSgnny9|BXgf2x0if4YC%1cM;*c>+zO zXe85vU*>K4P3Kx0v!~0?Kv}~-ePcVOs@PBGy3o03#=wjH9RPIRxLi%$B~d1GLOPmF z|J$B%ny+~EDZQh^YKD)uqzIhZksH|w#*#7kb**@GBjQUHuzs||?yG2mN^BhB=O(%5`Rb(>sSFJ%j}Cw%q8sgkM?(-({q0ptfxsvyS;nS!BW7%LXg*Axdni}h z`VE=@LVXCcENw-V{xBY`j;kfKp~GN1+wx*)LpuWecA+c4ic6U6)+dQ)2(ZuyRqKJ5 z%#br+sTaL@Jg@i$jgLE)sE($I3ydf$82a!wU{BYl6GWgo>p+JUS;tTipD6gw4X+i4D zwCLyoY5?G{oJ5ce99kok(Wh`xWcn692;*iP`h0x?oL|&(JXh9$lCa(O^Jn@kVq*WX zi3y~@z=uj{jzkxbko>S+x`Gt#4VRt0x*yc6P#^8*ZMxIgAKR3YL=Bhf8yO*2L&;oR zT%?Z>KeMa3M8wAVDE>NJWRjM%a!LIm8=Yf}Ks6HSSLh$!J$=u&@EMH6awc7$thVEb zJpD)wFJ=BawxHv%4!mGGaOkJ?{MDtv45~sD7`7%42V^j_Jmt-o8+dcgCs_lT-xNBd zMTL&4s=xC;v)j^oITL}x-HV;^osCm>U?tikUC#+m;>`yB+^~#sQo?A8#e5i=Ymjj| z_$9)#-c1MLrAmbJ+o0Z;RPV)ZcKxTzQLhTMR#YTj3ifM5T`(!HB*6alEIYsn3AoBD zRN35MB+6O4ztsAivo60=Qjn9Y_+nlR4rQz0h!a9U2Wvy0Vx|`2CA2+V+TD;XgJoM3 zWc~oL69fiWB_t(2Cm~54!osq)z8Xt9?`596y}AJeT;h>pFNRwJzN#*w1|m}R{X3T+ z=g0A~8F?UF<{gpHcg=JLvt(y;u?p*cMfZNGn$4iMFuRK-w@GTg|G(geskw5*11y)JjKw;!t>Koh zW-CkBs=1#Q$kK$pu@CF|m;=g3pL_i))&&JK zXe=u&%^t}5A8l0fZ7SqL^l&m$zp!tR+?HV8x;&>}XP$UF@=d`l#?D1eZk6 zMg@JeDA8Engt_r7&bFy2Mp|BF9t$Or97-ZkO6|EV>VgxGOC=mEUcIz^Z9ym8YyN8* zNZzGaV9O75AopWDa7wAblJeQC>8)G0Aj!VbNt<=;+LJR?=au_{NpWW;Aqx|L$wENj zqa&s*iQ~^5{y7QBhSXWl-fy!PkGc8h_;gf? zkH2c z3n21urWj*igy(4a&o#P-Yh_3%P$uYATLMRbva+tTa{y4TOv2#`ss5w-e@&uOjk7Q{d@Pq9Ip7p*hlPs{wJY< zkTlf=rTT5~Jj9ltot#wF)6<)sV440gK|!CyNoM~+;pfyViaU4IxTLKlP~KVP#Nd++ z9H6t&h?}Cpd!l=BUJzF8758q(_#s zqh)C?k8Y-BdaK2Uu73fn{Qjy`-3yI6E&7|88TF#PcvO@WLJ&)8LxY4#!per6E=k#ayY5w|`m+_r79}Qb+mQBaSwg3T( zsKAdYT5dR_=QxotnF8TR67BRt3(gIOK=w)+bi0I0^RJw~EVDJUr_MB|CpdAzNr~XB zroNkv?C*0f`&^7r*DrU_>Njb8EzxIGVF1Y;v3j_Wx=+p#UTxf3hj1OEqkrX>4v_Iq zEio9Au1*&+w2cfuml0$-P|EYD6KrOdgCvNbG7TUU%UF$>%4ioI-ssgNOBI{~f=6hI z(vo1N38MGQlmwr-5t4we}dksQgIcsY-5;W0yMTJxw2Y4>Ycz6&9Wmh!m$7Lgir7SWjqZ?kXEH1riY8lY?dv{AJV)4pIfUQ1|w-ZZb={ zy5urm&St?YqJ&*l*8S;}6+C3m4#C|oENlcp8J&uENiIIk!E%~X2UGdU`IA2;jeVl? zRy<}s9?glPAYPFk%P!vruv^e!tChclW!3+zZhbEIrFTmDlAswBr1W!Y%CBtn`Fvo5 zxChm4xDdoI}3R7gjRXf_Z#%`gRaDowG1YkA9 z>$RWYa$AGn+VTZtuPw@Nx)9nL+&8U&FE4`&3zw*xNpg13A!lffhFmzDrEG{CI3Y~f zR$;wL3-OXTPo$l$SPX0LG8eH<6pESYhN$K$5j&!%6)(Rz5Tgm;efF!B9iEf8Px*#T zp5@c1unA-FkChMMmJLmx;X;$KSXAiT9zClp(2Ef1psf&)AD=u?41*9cl4%7%AN}nU z+1e>&rxw$8b$zSVttYQD`HD5r!#U4=lL05B-gQh8x&}fgI*8wgRJ>U?WrTl$Wribm zZgL;-M9tEYL&pucPJUYoM|Q0+S-r6r z5tj`DX+3CJM*#|Y!8(F z?Bs;`&O{#wBFkm6UOW*KSZKBOXau)71=t_)gGJ%Cjg!-L3xX25z7H?i#?k<;2;hrQ zrlg?wcMZuqY}hpk5IbJREVwzwG6xdKm+dfkM=m6t*AXv|lbJU-dfwo)tQ;8k0~**A zf`Rar--4HSHP827cuKCqU^Qsd;<&k^Q6cICM1BCI9kY(&I2~+T7Mtl|Z&x0`Om);0C zSg;Q`gI{8jSz4uAJt|<*vb`2Y3>S4gd>_7lhvWF+-6D17&+G(oS#Sepvv`x6n zV^<}Mn@rX-FYlSn$^C=9(KsZsTy;4zS~~{>kEg4-bS}sQ-nW1$3D9O0b3z%VT;gs3 zd}Y*o935{u^`q_+_;-zT>E^Hh z9yzsn$KzBqgnRt6*4agm4z`dL0AXh>j`E78HeGi;@B z#A@)pQaH}Xjg6fj6Xe{P2BVA{y6;>AOSCAn$01X&uk$9g`Z<4LG){ldJz_Q~Fht9d zlBFf{D!In_VE&SYjC~e$%3TBaushLZm#Tj3=uPQoDMyZXV9dwm*_!Q za=%%fA|6^R+l4&kkFh*TwAS*YgSR(PIlb5`7R?lCCHZ=dBt8yn*+6F-?Dk*mHHgap zkFB==s&aw4{?8!=L=;IuP(&%|Qd*@%2?3FmQo0WzeG~=hkdjtFM5Lq}l#oWcLAtvS z@$GZ(`_2D9?|0AKxiik(zMSXTd+oJ;i-!88m3C;Ivfv)&cHAP9~xYUF5X<<8RzS-k{SCnvTw)Wd_zr<~V{SG>>Mv!s>(r(S-vV4?{ z^XGflOYU|5$4Alv`$tbCgP$q;?`VG}EH=q6rZWaMFR!3cmu}<#UWt-CJM3Kd0N0G? z(axc^;H!lVnH#}Do`8Q*<;?zW`P3p_&7!FNrHyUg`d7i?eWW<(RwCB70Fy0UTLwgJ zrZOSs+xOEVrc76(@D$T5*i({lj{MUU!;70IZ0FWpX>0YCa?T?|si{n0BgLbiY54DqevTMpB62p>Cb-FLdusxHP1~sEP2)1TdSZeeTX2mi zpw6*UG?t&?u{tbRj+(z9-gUxA?#QiMDeV_ZpBm6&fuyhr2)GW}=kBAUCxGI>_j?5(>gtMcE!Nc0+OByoM+Bzs9 zBoqQ3X@Eidh>44{ad9cp;}TUvYHEI3m(qYUhx%bT1TUvVghWKP?_mCXQT#J?2mLNF zA)&dh?lq3j8&**kzYuzH1>it`0yfk(uM*K9H4n3aaS(4KeRhOK!p9TqH#t*!i&{8c zkUHvqKPFabw(3Tx4JNX*KU1b>EJ|_gLFzB1@Q-X-+w_~8Bs09bx8zuahbK2U&9Z2c2Nv(8AK9@Xo+CGxq@G(Tfb5U;VH0VoteLlJxAYm>-pPhCoOpYBdQNm(6j|8X+Dh7Nmx{Mk zLk`j@)H5KlnT(ih?{P6v1vN$wEf2W3fADh*$U_W9GQ@?hhLCW}os6yQ^q8yd@7_g> zkay?V_0_<_(Vj}u)364g5u(aYYJ{7UAKZSA#Mxan=fMU=2jA$V*stihQCYy)(jHqLl9rGfP6djr88C$HP4yW@FEacBV=u&W`h1xYx&tE z5>n~GKsIJmH99@gMfwNQPbwZFR z<{GfKd8%_5CkC*Nk0-?11twJp^YFZikGXem-+nVXI@;XOr-&|p`m_&+O4b|O*_WY| z`1wlp9MJ8Mn>KcX^4O?AXOom9Ir)d?rl#bT7|slE+=Zv6UQS;dmVrWr6yR$8DOw)D zkJXvzl9G{Wn7VTRFhPDaI8b?J+9W{W84ZuXe}XU+kWusxvXEeb?B=un*n)v_dc3y8dJO90r@n``WT!y_wmyLDfD`;TU?&xyuDONX+|9D zv0R*32s?haYr+rL(Jhj|(wr7NF=85Ol{IAAT)*H(IWccFLebbMtbiqXprKu@jgk=k z8ErSP{JQL5l)&tpR2f3m@TTE2B#N3FFhlcPDVaT{#0FOea?%KYDSXQti?!!$E>ruW zG(W5*^=KuAM1}ICPQ3rn zg1*y>>psSX_;YJx;MO|s^eJ0D9A+Sx>+qt9wcNPMvrh@6#$?>NCCMztoRpN5`IF=0 zBapG$`Yej>ff6ROg0e!$m%x)dzOu5CZ}56$WrU6>thlc$M`D)Mbh$eh2Pb!Y*aTrC%;BKL$;7wuOM#Pb4qEA&kYQ;idRd z4Ey??;CNU;GfDTuePM6&Sr_Q2mFA!0VwVO0wLj;JGh&1(sbjht0;#c? zO2?>Bm*WE>iwMvBbbGFN<@I0}S`wy&m=q7OgbO3>!x$K#K~ zwed{sKv47;SyDm#fwz`loOg>riy2W|w&*atcN`&b&5Ez9L%B;MRvU~tKR3&D&<1+aS6$u ziyK8gdF!9)8VwKO*PZUPJWJ4gXbwdWMjnVPr6dubFQ~+h#G3cfxw_ynWM=Z)9Gvu; z6tS<`2<^-K`X{lXJ{H;CK(jWa!&SRU#p7c8PP4|^{oB`j%C`CrlbEmQH2Ky(KRNG< zJbkazIsMBjgI1AWrnIRR5j~(tdy=)uh?=b6Ayq>ATt{C8k0FBh>^GVS;?;CqkleUSH4#!ADrw8kx!R-CQI&5_EW42fy=m+Gs2;h zkbq#zyH-}k%#3wY=)gGYL!}ps`(1CLnG?yMj3tPbzA9CC`!YDeVrp0+{UF2HpJ0CE zSkB1&KR%249avLUjq)O{{*eKwPSj_jyT2xNYhR*KXN?4Qd*pPI1E&O-Rcw0w(R_!V z?*;lhulBzF`EuQaO2d`C$f-)(7^Q7&?Go(yEIZ#bMRi0>N}FA(7F!K~H#WPw2hmI&@3et(MJB4FG^`+3}S=5IP?9& z0;*4)NTXJ>Q>ME4*l%+|9(eCp{!d|<58eiO3(AO+zn6fy$~jgQ5AVu*B{pN-hGp#r zP+_}YFM{|1y~Wfi*3++VAiR=5kzrxd?ypWjUtatPOJ4|6Qbegh5-xPt0*qz8==0N4mtWP0gcrN7(1bi`YGR!=PE(bx zzXhbbdi#hEYV~eXP4Wbdn}{VLT=<9Q3fg?&W=~L}NmfdZ;OJII+Te8PL6({8u1h)E z0ErH{I&l7%kydJcm4$g`CiuUU8F_!QmU^GrMmwzz>unEP=8{fbStjZ##zv|~u+<9B z7(2j4MJYv1&=$B_0nU)j&iQ0-z)*FCJ-s0pe1Vs@;CEhOcdxy5(o22Q36lw#U?!OX z=eAdIJm%lfDiCepjIe|W_Rh119oCr*LKcED>!O4 zN6oZ*ej8P?s%u!3HL*-Zj-c4l<@4t#4cPYNRM+^b&*Xv3Yru<5$XOcRQjEPL6C`e6 zUcH8i&FU9&E-9;O;Pi<1Y#JVpp3mF$OzNpzr9o=qb^%L0{|@0CiIn3@`pB}O{?g;v z-KNJAM-yj&o=X#l!n6=X>_`P|+iFMA7qU4}OQ9_R%Dz@_Ffoa^xx3dix1N+HF2mKa zHfMil2X1zWp1}jgW&R^$D~T)e#e{Th<=c?8aol6xd$p%2(SK*`MrFj zyTX#souHc_yg!!>t0?ihRbh?3c}4bsbd+uOL2fiBmow+*unXc*tVeS1u)Vgn@F z=aulK3jOx}%vfYdWsK_&Pinh2P4s_#PWLtc8Dlv-7r+vQPqU}?0R_!}tpo`p{wFR% zh{Ay(+iGa7(W^O_%6c+!o9cJe#;$FV=2N|nfWjDCsvNyN&nMR-Pp2$Qt^Q&&c- zH593@B3;qCry?Umxtf)kespxwn|Fq`)BEN1Ei;RHu?!pJPAEaz1>lVVV30WQ{pZQ9 zbI2$raUgwsbWTqvkt*^H?SnK96cq;qOV@(+!QYCdV@NI5>nX=!hVm^b}!RLel|yWFV6U&;1K(@o0V`Nk|?e^@ZW zCFq}k_QRq3nVII1fYO1iY2=N)&M$4>Z-+a_Cneqc_)$w;U7fkM^9EQT>wNsAuW(F0 z2QAvcX*Y$ZS_oaCC8nXJb$9AO9){QoPt1kkd}F_ZoF6|TLKsA4O*<1)Apm(!sw53M zl*p#P!vNL@5sRSd3(x&9c)vy9w1N=U8x_NDruH@S?fT3SA2J>%vZ-n!{cuK$3wsmz zg`f3-&2c6eD6x_rrLU>GQP5?}5BZ?Z+vBeDC)dGxY}C2;kH=AOc}Ew&<>~j@vca`f zm=IiCx5r!vy$@%f6`v5C*A)QBtkVqZ2YHDBuACk|6v^(r1pV|Mb0S5qXuKgv!33sF zM2pOxPK(%yBh13jpGVNL)gff<+rK_ZSE77R;q<+Bjwbi#XCtJ@jXv7lGVqch#f&Rb z!g!KM)^M2dRXA!#h0vv3u+-lHnJ{3?V4_$s6T?n8;P-HKc^V!(+k z$-gRh#ZoklI=Q$|oe}&beRa_qOSq5>dh#f0j=pmu-Xd6VXgHYiVL3oTK7pP|^J;}OkItkqXQMS9T%TD`Vt5B0wKedQd$%EYs5`s#3EG~%0Oi(ubZkt2V`qo{ z=kwO_zq7MXVclLoJUWWd$ih!>43yM=!8koDvS;(WW6qgQG^Avx{=)q1x&Qn1&aL|^ zVtn^?@V+iXMZ$y@VX649Rl(<-XRohb^WwunbLC2QE_0Lyn|7Ld&#tTlQNz&MoBBQN zFJs9gK1YDNzWVEaMsu64>@1m z=C#`CeY#zdTe+pMPgdbb+m$Lu)&rZ|V+Ot#gFi0akaeS@{m2~uQD+Ul+6jNav0OmM ze=jW!=eM*2SFM~>99l3YR};jEul-H>=zM6l0NWFqaQRHS8fTHnc1$+DWHADz)`Q0r z_c8H->)|_`a{TXp*i-Ha)1N(q9>egIiki(7v?6kYiX!^`iJh)gBo9KW5Y}C|ok|h; zHy1))l#()LBYz41dq5!++_0CsoJr_aIV;vy2o^bw`r!bBolvH!UR6bf=g`a(md4PS z2Y3hZKj(kXRcolLcYpeFEBuT5bR#J^S|!HHJ>xr)M7a?iQ&XzL9Rt)I(^CKeVnAF! z!DZtU@oh4$xI@;BQl^)@7sI7T{;=9*Z5+Ngxjo@G9W6C>-*=o$dhR6z=QS z|59`g#55XLnszc+bT2nSxxs>jK4Zv@N!{vOQk~%Td0xt5$DcBikQVrIlyH=6H2G~B z1=0dX#A&~mSjxfwggEZ5dlLFVxJv8pz3AvAooG0ik1~|xsSC&Hd~E@*C%^0!T0c^H zF~?nM{oN~Prx?a763|>EUb+_cHc)!BAHDYA?`X(XQ7^bX*q&d&daA}Mygw}tRje06 z;3JoZhlZACc<^@n&!6A=6&jqrC7!cjaaf{aq2F)>~iZ@I4qU)Gd}#@FEtlIhG!`B@ZQ?+n`9Q;Wz6~aGla^)%gCI zbX1tEx(WIE>pHx##=BJ+6%<*wOE^o~7S|6dCL}4^X73gPWSH5|b|mRY`E?nmadRu2 zWVCd1C6Vyu%@>Tt+@UkzO3HYNY^{RTm^Hvg@5w zUbnaqxf7D}YQII1AOy|%_86SY{(Ud!*1zKZdxCedB*`;jLO-UofiXd>)?JY|_m}9J zNQqn-;dScI-Sf5 z`XwY1vXT=<;M=RdM_r6FFY$}O@k`o#b-m5QPV2J_$*O%Aw>*cy2zW`~d(3;P>#y&! zY%1{T;OBuS^H7NlwP=5dr!n;=Bu4rkKsS`t=?Y$LPdlp;)L&qgAC5?S~Yr0 zwHJlxcgP{N+$X8R5tcxO9+gDCWoV`J+4zX&|tZJ`0QD z(JtL#tQW;)I_?msnctVnhnDU@?2+0I0M7HJ$-$9zC!4#wECA0fH2b59G(0*a^sm>b z^#|8u2H2_=_H3xSJ&>Wu+T8s&=V2ra#|oHESvS z$Rwj>Y|V0hA>31cVEnJs{O#L!F0=_b`LFyOPKL$v&wlES5J1bf}9Z5->bc z)EZ!s0!6%Qce6>h-Gq&9CECHA&_MJU^Ryd&SzjRjZVN{@OlY9qd&nABh#2 zUm{C!r11~R$LpT-vQ3W0mcCtQo@bX8XXjxH%7;?7&s!}P!%e$t&xu$oV^v*`5neZV zhe7<2`h-UPDfX4q`Hm}(oXPpM2ReB`lx4jqjJKECV+H+gDJLqy`ph)K+dhCW9{(HX zIPIYWN~3{!dJg{;>vAW+OgukFEg_NgQuC ze~pgKL27R8@6X3yVg&@X@q_`cL-|+!==6U+-lWygkHWnWZHugJ5Ix^qD*wBIF>yn5 z?Si*U(uAjc7w6QhbTNlJfj2_~#$|JR`&S@5BbJ`1w!G&8WS#C%%Q zSf$u&qMNX0lF3uxAIP+-7J?LvMut+Z)GWLmXg{n@~^t(YXQ~?I{6huJ1v~=x}Aj*eH=n05rUCjHGQ9=d> z5VaSM-{o&MC{N#bs*c<>2SBN7+~}sZ@45gev3QMIrVC4O4+F9mF;7Xgmn6)> z*kj6YRYpRr^rEeX!h|Ns3%h9HuC%8JQ7RE-?2c_mXU-8o1@-qFE5+xLY3kwdx z^(7SzrkMpmF$dO&-cU7}o+AI-`n`~ptsapa@E#s zGJlx6+a1Xq^Gy8-5hIB)qN{M|olzU4u~~0$$RWxQsYqp`t5PlXGn~LtkHgj^yw0uj z8d8YkcX^Hek)aen6tNN@J&-@mLZlh9JRRv@_Hy(0lg50gp)TE96gKeMUrW}h!K`6? zxvO@%2Rg;J+hV{Deh|5QAq*a`nCc`b&K=yF4go;KCbp#r(y=_9wFYlv!owfF$;^Do zh0uelFyocLm3ZAOv}O(Ad=AtUjEYrCd%k@u^B!{voZ)DP-n58|S-o>51~!yWmm7KY z3Fnxui|{N|7}$_JCe~C(q_%gl_D{PbGB}X#xtg4Fq!D`9#<7%9HaNn*eW->fKynSF ziJ@>D?KX3N$t3Q0&DYi<&j zLbv`AGv)D?ao`E{IURi(w0XoU+_|1iFn7xDUzUe6$8H?73HX;r%KcO5Tr$5SIT5|T z*wgu#aBhl>a^rFR_N7jR<0n4wt)5@*BtVU*KYrYHh9d%Yn^(W!;OYnUV(-B1WCWQ3 zMw=2yEsU}4S&xUj@$rGOKxwoh!ZAufPxIkG)IZzksjbf0*xP-|as5x9K24pxb2|1? zBX@XIra03dEbbQ*JUI3$IVLeNF?q?fTgtMkkxSF-RCU!i%7S?o!b_sYM2o&UAk zo~~n$GYSffr*FL369RX1vG6qf1k8iQGH=rx;`>F|Gwa!_*(l)(@0~vxK5n~9#)1$F z8~WuNJjet3V3*nDp6oAk(GAd(flC#=#DO3{iYX-sDAq!16g zFY&AbVI^Ol^P%t4VoP6z$5l9uI1e{Ytji+Kdq=Dhm&$T=$|y0=6}Hp%xaD`t=iXj*C~o>vI!L3S@Hnk4=<#^2?oL5O zDA^rhPEH@^O~IEhOw^!u@InY@+KMhBe<(5uy2ifz;aYoki<_F7vPUAE$^)I7`?_Us zh4P}!t#vZi(v%c==1HoUNC%z!@*C}wr_48RKG8H|eTRqt#KY?LOZzkSSGov3Tr(Rp zGYVrrW2Td$A8w3M_WHoH!FwMcJ(LigB~>opj?V*lbM{+FZywyhySB2jq+~g8x2qeQ z)jO6Eux_-%!c!Bk8K~xjFT-hd8gzxHx4xJR!R>q6kBl*MHctBwmLZF^Kx|=Y&wV+b znB=&W5uEwczhqY>JTrS9c}gBF+(^x>UJ|UG9RWWiB+gT+)hJcX{!DFBAyYf`$JNH7B(dXVXmqd2M+ z+fKM*N6x>)xq#1FUiT-xVVOR`OwhZ;s85@rAd0D-vWs<&w04lH*42T3QY-{xB`g~> zi^~z!E(7R&BtNQE)%bG3>OTo4FbtMWpkD{N?JV#{HyQ4X*w%=jUmGpk{;FKzRB*JE zHU8lMlm5W(N_jB7ph$OpuNVnY1#|@81;$NrW1~{q9MeY^Ai3lG0RAEp3#^yQzA);o z%*_dJ7k_)CX5gmT#~Q1b9y`}Zi-UMiczLLcDp&OpC>^>mfr$5;kAV{9D}SZ9>vh@j zZ4zOSu5y!ULun`N#Bevo>I3{*bbpj*z{6AmI`l0_EaIbkH&fAdAv!iVQCB; zcnxrNT2gO8)S%fQ62t-cV?MUN~xox z(CE-XyVC4BG-pQ~pB$TELK1PrzE4a*A20p1al&Vij{oEvw?8Z|^=`I%8x9e128O#B$W?Cc^WTAca*`H-;j2T^pZTC%{&5##OXaU$fAaJH==x0|JrigPNd?9E6>#`@ zC2_|57v!^m>c??nQC}33AEM?uGO&k=ta!qATcrkTR^#0XX2Bw8Z#Ew4+7oX4Iit#a z$%w>!$u;g2Q{Qbw%vw7i_E|)^abhmkl^n^^wsyZQ_HD z@@eyHS=p46%qfz`VqQwmk?AjA5WT;cS+(FJ@8M)W@8wEVN@ZSvO=Xc#b9Ma_xeKPl zX{mBqXBewFL$3jqVjy=S1q*$?oSXqS*wBv;!~gKkEM}*}PTE~rwrzIQYc62hK|fsj zC;an4#rFi=Z<*QD7-1&|-ns|erE?FLV z@A}Nj(mjr6xtD9%uF2zjJ(bc##tsjTO~&1QY4hnDAD_?=pW`4;%yX>0crjy)bHWQ# zWtb>ZH9Ei9lzjC4q~w1_>fP&l;VG@BrPI?_B?(h7Ft2_mBx9&<{5^QP?k6@cUwjuh zZMu_3(%Iu0nbvDs+U5)h27>dV){Wn(-jDuz#6ccCO&-A--gG{UOFM{274nJ*6bHL& zWq<-4Tx!#xaU&dBm7!avI^Yinsa;VyuN$!_b{X#AH zekse1QNJ?sA(~w=_+y#Ok^GHmgCy@PSB8-J!#g|vEJ+LB=m=lxj`!$jG-mRLn(yzA zFN>`#=VCf(?m9&Fx3zg>L`9YBX6H+M&o8brur_x2pp#T1w4a@A%{Vw1aviAHW8Htw2R!bfq=N>1Uuf>qE|_BE%c2ZPo<9h?v)R&u>k+GqXrMMG}No?4EygU-jtEu z&hBOThYlH}=;KRwg=-D)9}8IbfiVM%*#5@(`t6GbT&M4mosYysH|hHbQBkHjTenXi zx-B#U)9I`e^6|8=PY+a9RY}h5aWF4f6lq^RwQ6nc86<(bdl=WkZ|CVw1}m4_|M#jJ z6FE5qb}?gWOU7PPWa~SiUN%ihnV% ze)#7UIs1s3($hYSv>R8qv0-ib!FlwLZ{=TRO}F?9P;D72f(W$&X-G?{b@2;Du%}auq8NBXWE^f)A-5__KA( z0yH*?M64W{^`YM-hsk_*aPzVw+^C^L!WXcD0C-AQ)Ae`*Kd}-x6wVF~*Qw$CJY!FM z?i__3H~IzoH;YnI8ccEf<6mx!mW(Fo0%$nBD~t#Df>Z;zd5%86WVNfU?sDo?zFmnK z?)moAvOXWlOidZpmD!WAIM*KUsD=3Hhj$H%oVl<4Wv*r6X#^+AAcC%?*{>?9s-@rib$I zjbo2LMQ32I*je~vc^{rr!TPSV!AN<}*>W{b%y6Ohr8#jYX%Ha|s{Q`pzsrkv+Y2>x;h$1X`%5 zzOi#aeOA%%QC#D2w3U+q7r7%y5BES3n<{_aF1X5!aJOZk>vg{~pe8mzJjd1jE=u}k z+eClZ8rkbIbSrY63c|hHqVJavGv1UbF!4(1HXH=4V?jq?oI#z%0KXL>Aej*oAE)&K zPA&&qciL8mO4i@QEdOnKdb)?fK-JOF zkr2F8lA@xblC&2uZUjNVV4|w3YGTHTG2eY_{`%;Z{NO+36&0Zo|E}DEgRQNW0^`c% zof8|PSsderD@w;>SmdMfCT5MhvOW3g)vKbDRet-7<38ojKEqSM_TC7=X}(^>-&kjV zUso8~b^mi{pTL%Arln~=VuZ6I+K8u?7rzUZ?%XdRTYJrJ!Wf4Eug<|jcFFkCCj64@ zc%^_l*nM|Z*lT0*?;aS9F5DwdPj5NO8y?=ff_RLMy?jgQQrC@$dl`z!GN?Jul$(1T z*yCq7*AgSmZSp(e^5rj=osm1p6}3qT`~|h3PV~u!__f-?9q`p?*Buj+U!Im@i!V{N*1M`#?IDA% z#-cFxtVh_G#O_NKUAhzw%$-M1#HgM;;axFw~lO^9^7-?x0**rM4hRW1+%j5NA0pW$y*f7YZq}X|J zA8Aaqzz4vP`>x)M69@gTT(EpsZktkOQRFP2FXFG%bS8taKTd+cq;=zEoQimq4w&m_Fm z=W;ap>6dVb0G~fEJQf5?)P=tRz$!}Qs-)o$^b2HbN9w8Dbw`EVeeVY@(l@G8-#L|&pxwn?2jeMJKOxy=Ug;_C8fqU2WwwP2=ea zw*nlj&VnL*U2J2_Ci}RWH^5W5sqz1MD#1rtVhV8vw#?!*gkkm=72K2zd44=$$LyY+Oq_Yrr7)_BN*;ZUuR|k!=4ol;-$KGA@TtY}12EMG_V+ux zgy9j>gh&QbU7YG&EWrEzUf>CqwtJ5F)9QSPhIx~FPr&o(4 zx>4Wv0$nrhI$ui*Bf-M;&}DtB2P|AT*xEbJa*tW!L=jKlD`WyshQ<|I+B&9Biv97P zx{z@r=ckSWpvdL-pVZIFuCA_yY(|&OtBSDGI?<+oq2)7?mnJ4^8X7{NwRMLiibBXZ z1k5GP&=(AZp08iO#$JFPiGhB39U^LqEh$w@HrF3R_Uy*{xkCUS-%AS8e)#ZLO*7II;2Fr2-y;D=i> z`U$Uzd|SgS$d%7yALF>z0_D3X2iBo)8C+=o^{VKv&c=;_+EU(#w9m6g zrB>kP5(GDwAl!?)awlqK;60f?d9;M_lRSo)5&fiYsgoNQx}{&E`Z7`ZN~mbnj_O2b z^>MfJM%O1x*$_S=VK7!8F9vPHMqbwBg-F$RcAm!nPLe|JUjto)chETWuXdOhhKepF8|N?6pDT@{cv2I? znxX3rl`oC;!_zRMs7@!$qz@T^=k8PP_Q|>jtHHsFLR#A2S_H1dtHH%t*vhJD^rd88 z(F6S^JN;GZ04}L9u+S1oxs3S+&&)H*+w0aK?0KmvQ>wG?V(fTI6iR8^#&!$HQIs5L zsFwZ?7r=dF5=SHL20Z?}ENq%kRO7`ZkZivUlHVf2!*FI4VF_w9K9&9Jg?# zV!@>J$(-K=sF)lBz&|zJ+Ubt)mb&=P*Y@+**gFBrkEt#)*6N_WvM=A+ylSA0zk}OG zD6jq+wZF!hv9#o={_L4DW}oq5W*LT#Ohr#TLTUNyXA8zvw%oMtF?UvM+31`6&4(29 z#enU2ech0vm@Q(8oSY512AQXX1h0PX$>;=IbIih0k)`AIoFaseLJ-cjW7V)w>wkhu zAXP;@TuNxW@Fbw1t8WSn2r+*++1}FeslJ{WW^ZQ3Y;NcUAh}ioF6E^%Z~2An%Qt^MFbo&pOb4yXd~ zrDpR9U7cII*{w9+sV_f1uB|Xz4dxpa21Zk;&jgytqx==<*@0S*`Xge7WL(1dg@yd- z&tt!g!xBF{$~0dD-~Xzp0T+7gv2*!_js|i6>CN**f!CluVHk=NqI2<{omFyVd=j1u9tm7B6>*go*q zf7P^#emmHM!1c6fG(tAvwm)_c`vMUK8|F)b8$lj&bn(_g{3Yy#h3W%Zuz~4lYv~uN z4vnhAf{vSnj}`VDqOhG8OZ*EN*k3#5EZ zl-Dp7R*14#TjHQBbSYwvm)j7r1Jp>q91aoHjCXcIqP4`l{nE8TrPsTDQZd z2Tbfp6ea6El!_0JjGQ4QF~P}a|6Zz21>+~Q&I0RQ#yB3srMl$H%%$WaShIoiY6o7; z@Be+(TK(s$wbYbG_MS~+lJ~&S&c;&e*~3o!NZ%b@gvEi@esMPni621G@$Y?WIlH8K zrGJ&gN5bc}Q0NV1S_OD% z{sMhB!Hm9Cw9I&?qWnXy_qBI2hyX>4*9QhSgVm77VG8h?X6^s$Ui%sG1m&=unfEo; zIcD`!KnwfuGc}Hs(UV}p%uR#KtCDtMOLTi`yVcs^T=6mbtX^*OdhL*e8k-mPSh>!zCY3krOE zzl~jdI7!ENcpS3|Fef-~*;|%+gX=m2h8>`qvsE^QGG@RIu4Z(f>2R}n{JAzZ3#=H= z#3p9+VQ`|k`C~$&F6$df>h0a6DXce4XJ;0Pfqz?%G19`9ts2M~sFeuMf=P6%`rhk0 z3JQw*b#Y5%8RlXx8Au*Q>ZO#0Uu|T|!^sg1R9sdj};1gH@Le-F~3Xf8+iuIRr z+1omz*K*Dam1I`%9XwC-cYm`PuXk_?)Qsnd#L|7p3}5yy(_p8=scd(0 z=pVh`_crdIL77kJp%4$vEWbf*ZF;ijVbm(bRO;+%%XD4je}Z@isr%ChwpxgCcp0vk zoidACrerS6=wQm*zXRL18CJ9P?G;WT(K;wi>hcY}8aYSt2ZpY}$y+Na-h9 z!LUtD^Dt-~(Z>O~5j}d`CO6XN0q&F4bmejP^(qOy3NNA0K%Oj?UlJ6cU$n5YiZHM- zeEPyXT>_F?`l>o3#H`d%CN~N{qVV;Gwl^S8D_{#Sc)W|mWaTS^gZ$I$BinIQCh|EH z+mw6X@@05mh|Q8JyAZ-4;-db%34z zW|CmbpyhXKZpch;$pu}h%Ev0~dJ+p;LnPdl8yWyX<>flKfhV@UvGNP0!q{e=7)`P) zY5UL8i(P!vyrvask2EXrei4B(PBL;#sQsUNvRv!GFKC&gu-IyE;uMmN$4JMh9bL3J z9I4ZMcSeg5df`70A(nIrJ)wheJliX&@!VRgVDvbF(`Wnz8Xmi&Ji{CG!NKhxIByFI z0;l2Tab)FK>?Tgc112_Y581ez=*ILtj^A~EK2}2gn;4%$+7wPNt^i4`G7^KBE*9#? z9etNicJ0si1Tps8?4N#!&*DVNSgd{eC5Lxsq!+yOi)%e~ur)RSX?5g$%$Jw%QB$$< zh+VSta}tMYcJifAm3xBoN*pzJ9@K0(bY1`?2)PkDh;rxw1{k_$WI0E0=q2f_ft*z6 z%lZRdC0o0sDF>y}>@(X8VBZ4uJWKR`LC*6k1=8K!$msIGpAg$0X^q#_8-u7|Fl^S+ zEp~`~4q)^+I5^0BUbns)nRU+d9%E~3t2wrOkYnAIuPc6+4e?&nkg4@={&KGC` zU?M6h&Ur3XmyIu9lAj+A$V*o78xM3lb9PLw2|pEnKCzu+8)GktSoD>XCT67_s4>g0 zlIJTz#%2{?XJ$tQkG`D10(w;}S8_lZV`<~;O-~I9O0A|9c+od6?iS)XpSbVqys+`g zB}d#7f(gH$rs$@%Enyge-t2vr-^74f$jnGu-kS>K-t)k$med^X^sIe>M$=ep1D@`I zwl=1*76rYGKZ8lrB2@#r$(LnXIFHWVaRHuawJ+;%i_>e~!8*Z@k&#TQ!B^qVytm>i zpix4GHcszArlvOLD;Zn64|TVc*Y&pXxu=Cc91Oco(CWUoVhnHom{0I7wNYNv8DL5F z*us@65Gx6r`Ia1#Ra;8@7IMJb%XG6OXXre>db!a?I$do7=V|hzlUNemk{?fKd4}xu`(po+?41X zQSv082W+>v?zJh7dbdrq>+IHzR%#g7>_S+d-5|&4yH1(gRZcDFjOEs5A`i%T9RCo6 zopj)ZqG~1|P946%7=o^@m!5AvwfvC5#DJ#+$lX=Ru2V!(oit=Yq>aR#BA|yK|0=lH zDSeX@8b$xVj_zJtO@9LY!bdzC<}oi`ZM&bba{PxQn)74?%@$hJ=lbKVLq{{8K=CUI{6HdcY-i_KN zm7-Q*RaHce;dG2WQeIsCLmk0&^A25K)v#Ro^(qe;`qb*`=gbFl^VIKWbeS8C zzHhl&p|(k6aM&Af-{A1;=KJwBKgfw^4ZqtDKcRI1@!RRIk$aqwaWNcIzOkKuPpL9H zX#e3i6lg78b#UzMvtJidg-L-2rC_JXGn_s&rFmIqV2e=h%s2$5T{e*qRJyEQ24b0zb*>k7a0(?S5Fr+J#s3UVq z?lugd-sR2`U_xY#QON^Hp<7ZFP!yDgt?$DYvNj4bT%@=k{v@BtQ~Tqu*mwma8~a5Y z_7R`q4MQz7r zAc%it$sxWkie@CgqwjsP+gSkxI6I)#2VDi8=n&L<6s5|=H^#@snZ|w8iHg_xN(OYK zT+PhyG7+pPZGbxIUb(w%z8Ucn+aQGv>B4S>Ja{J~{lpQ9>{-$a(IxVK)gv4!?+9yw z%ZB0Ju7^#RTJ9#NkFdYC3XGyO_*RpTd`hG{>8k*$*qkD-|!<#z)1=#UBn{ z3g`VycHn=y5c_Jlt!W|zPsQf)L+h%b7rZ-ufFV&`P4F{jPta7Rnv-T&b6^&R!~a)#LFcNI_|U< z133fLj*Bs6hcW5S(Ibafjjlf%3CkL`*L$ZMJ@@qBs#9>pQdHV9`+~)+8`W#Ab2&d( z2f$`vGw?%^POV8Pk-%kiY6_u z!t7<-^YQEc{lpk9(QE>qvbP)B^`(g(U1odvGS0(W>-+rto8-Gxe-HIUJ?Flkmu!tM zu}Y2X?GrE^$BDbbANb|{*@egcAK6Ci;U1{~TVTZ2`Z@a$m<79Qum76i@6l0y>dU}cK-bK9s|8Ix$cnC!8x(r9CxmrR(7M`Aq z!n=O?)h}U-&4S4WzamYMoE&T)Y42=v(!Gh z*~+ukBJ|k*toiVH6=v+wgcq)PSBjy4Q9aESNkhJNI5$u=u&8vmJdI4sS1Pv6nJCpd zE!d}zb}U*gW3LSHp0?JcczHMSrY4m^D1*3CMrT4Q3_3kgSu&jEOt<45P`687Ii#|b zRN0KGN_A9vv^dX&^P5(Qoy8S>{Bh_ENpb;;9nGP*mLDtB`W{+oGgJ=yYkK9L7$MKo z2I?JHcUqlCx97RB$wIUJB+p2wIZe;eR@{6P?LXbn^I2xI&`OIbn|yhzK@j3Uv0Tr~ zrQsYHIPQIhd$f@n`XZi-ak;Tw$8m4ebvPeIo&F^|`m@>Nw(|kOi4Pt{-%jrXS;@S| z#6D+wYS^aBeZ5AR(PQJ&=zgNhcoY*awtmlwW32F9clSW|k9ub9h`h(e+kgm!f}zMUKTNgTwTwpWa z5)ZpyP|D>O+ZxnnrCr9J7=2qYZE$ECTA0}c90ysKdR(r_I4wVbKpM+tIj$r0EckYAx3F`ag8NXIPV2*ET$kZ4`w;DN2zMr3aAS zVNd}90SVFrNa$S>dYuuK4hkVi?;rv}I-yDlE%YiRfRxY)(mT96bKlSLz0bVI$1y+r z5gg>&*IsL#>nt8wxN0nqe#E{>Rwsh};qX_XKmPE_kB*+M7Iz}-+m04m8JsFdo|qNr zHObeZFMbaMA}wB&GemiOaH9{QB`8UKdAF;K0QAyP|xmrb1eNK#B<_ADByw;o)coR71Eb}uZx+MjwXwBMRP1brV5$9QR0g-lo9 zta;JR@7R_i>CF^*`<(TTln=|zyW%ldZZJLeKc+zmW9*HsdE%4M53+nh4x^9MWclJ- zZZ5Dk-8Z+Z`78a7(4MK&MEQV(N+M-~V+eh=9+X8JFKm5O37)*NsWDpLzKPQ+q|z z`4=nN(j$teaJommPs)@dp|aMDaZ;3F;f69^F`R$P-}mW`7BP{Tc07_Gun|Tw;W^%2 zdID5+x!PIn_`v1>bH87Uo~h>SR3t!u>TDJ1wT*DbXW8|e2sRfL8DmS38v)WjYnM`_ zd`-m{O4EG+^tIepR7HvKDwT`RX=-VY!ZR2!xEVg0thOsaA@y@H=%NP5r7)qP@2SlBNjS4>q{_xE z^hRdwh&kk};Y)vVr3ENg1s*8g3$mJaX*|`tUP(N|Yt&IO;_$gp2KL|^ca_1&lUrSV zdFu|b4L`QC$(1&^U*&>7m6{F=Op-r4xP3_YJ1E%Jq%xL4KrL}&*N8ByT z=B`tW*aorYh$ycUzhsKPG++sFMQsXA{yx?+OKy6iVyP~G?}sdwzU|!B`|6)(V0P!M zd$pR?-T#b}XGy>~^=S!mHai)=WwjxH8k%+?fYYn9nNNWcj%lngcp(2Mv2gK8ON8<6 z-->wYqoYXYfeF4$=gBK6W&ww!ToCdBS^NTCmor|*cWEm06_{s(afC65apf9wh5g9- z_b($!qXH(s=DrJNmM|*(D1q~CynTq}mZkQdJ`|BS-jY1LTdDMPvhq9ol*p%|_SOT$ z?$M8TtkMV6j{QF(|JowqB?7lPxv(Spk?Lae^3OU*p3kpg)!In=AEs5P8DQNl_0ykad@q5nM!~yh&2*m7d~>f zd?_JBqs=}57pT#8bJJQGDM<6Wr}9iHo^+(U?9h7rNzgbByL|ZlnloJfL5ovQQY$jH z4iV?aV9;fC-!sCCOF8PEI#`IrKX#5b_2>R#Oq1%8>f5U|D^H}w@^4|s;f*ZLqArZ* zk*b5szjA{3-X^^&^A-ub{5}g6!O!Vrn!CYtSKgV(+Lq+coT(O>O%f-!Ny zI*qXTcC(WV`v1EIQvNJSd5L~27fx^pyX|JE#-|D1BsQu5NCnp6N1fJB-%T7N^Qgo3 z{wgQJo_0e(z}&AvH3C#OC7eY+LD~<}+8GZ!97_V7N|cEugshwoop3e@6cCvIo!i=- zKEAy$1b0SgsOF3;JMf6$700E#Q7v2R?=_&qx*ri3gT8aW2DQ|K-l8Hxbep9KZmwPWO*wYUypK!*4d(+lRoGa2njib#`QHI2n=0OQ6p97VY}w7V^^}WSuogWtQVpMt zA0&EH&EGNjUDKc@Sy-fOKABa)6)L_S0Q`>;ENp>0v?=obiIq+S<-+1vZIKUabJ-wtcZ`#Q4DHJDbOt#&2(EH zbeEHpGpw_^PzfI>TVgUTerhsRS@XTvbbVrXqRL@R=nX;d$&;IRuLM~|H`!wUKyQST z^p#_GuV!`b#SS>uKG>@7gr5@~D;giPxpNXjc@`hodO?yo`^u?vb#+kU6+Ed=*9Tf5V#9IJ{Z)0ikZ+XL|ZsYx-|!mxWaHxzsU$tOp9mk#;k)9OdlZ962_H4^+rL zJPQjhLry38G$T6wu%s z5A52F$KM{4Ye8TOi?o};S{m0oB6y`c8DM91)*4rwXxlAmI=Af)g0v{P(-U>xR5_te z`k3cA5#8?a1_R9GQ)-)3NzGgX!Km0$HBNq~o1`#rd7qtXmKLDeP-E;(<5KZp=t+?a zw(dz*4Gj&2_LFj_pUh6sgdR$J&2zI#y1m^aD{zyD>u^)ADXd|95>moR;KM!-{^OGZ z-1pnD(E0k5yD}=``=!I<#pkb9rm|?1o_cVFi_O}U;m%S9ERSKbf*WD5M~M*MCy#F? zT)5D*E$z9*Hkuo$@70r7VeIYWQ+lJI6&65k*gO1w%oUYwJU+CYzarRR(9i_@-==cC zw-=-tI!{k_=5Qj3Oia$QwvUWl5}xn%X)qjDSr?o#XW{lT1}x>68Jvk-k1?ifk6H+X zDzk09qQ|R%Mb-evg+;2P{i2NhD1+ZqL%7X-z0k}PYLGI&$~(X1o1gjAhko6Ke91%} zW8bffsMqTssWjXE#2321U!iYSG?8suubcwd#Y5jSf;=00Q%<>n1rz@=6Vt*gp;5R7(+V{d!GU9 zvgbHCf$uLgEbF}q^5}QLxIXF+Y{9+AaVY$`KNN~dv`MuPYqXbVdq_h3^Wy#Db*W>t zYO`a2!$;Cx0ed>f`@dVp-`-ST0Yl&Ub^Xo=o#ga_xKrY_8l$GZiob_+e-?C?&X@Jc z8|OKW>oe(MV5dE8kxA~mdt_N*Zb?XwZRx#|3HGTHm8brUG6ZJN1Kn?m97=CFm3c#{KlRmHu z{L4VB4%}Nuyf;UUp5mW;K=U_v#oE5E*3wQ`0M7ZKXaF1P6CQek)S)SkEYY0?lD0|KKXy+b;vE%3Ov?{n=$>YPeX-EK$U_k`5UizADL8DaF@pA?-0cU*Be)DuT}R&c9hahjm-nsusyf z2fsa9jYO6wPl6+3-iWIwoWKm6J}MB_J`$6=4m+)*kGkO{W}|4(!m1-mRCP|+?^{>_VnSux~Y-)QuLN3}cqW&#iywVr>!}-_>KHV?FndU8R zH4@W~gnFdSPHED24~-ya9&n&I zKnm}y_dJ6YL*?OFu~9ubw=aTz~a^tr!P$p1;-)0qsoy+$)BkHc~8EXg*@3W zRHBbKa=&#qX>nhpT{d|mV zqx?@-*NT(w+`82OatWr)g^jh6`1g_kY{SJq{i(Z>4Y!~6fW20`FV)``(6vPopmXY* z>x(pgb`7up0%6ZoWE!iQU`RcFkQf^;NHXSGVhF8K>mW@V{6gY5-##R!8-I0D$w>AE zl}X=Fp3T@gC-Ki(TkmGkA{<1_9m7qRKirsvb^$C%VEFBBQ?GzGH_+$@>j zTqo8qrq1JU)~Vk@L(!4~8-YK*De`QW4&&QHqRrR|$U~p$^B+%qj#E5=xtcnZ7lidt zafGiXO1NCWg#dYq@0dyIal%zgn0srjTmnv%e?UyjK@=qS&C9qnL$SK

fKQS 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%0D$@o=E%)PEZz5o;H(TRadD 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

OhAccJL~O;xEb&j>(El*>QsRMlv?!IN_Q zpzF2QTXiPuvLZLr_T3>MB;-{UxVVI5y*uN4Hd2xpA|JiIy>e5ZK0x4sc0lnH{b}tC zqCOzyo;`CeGT+Z8i);Du%6Pz>U!eHA{*;2*Qa}qFuwiIsC9h@6*B?+&02WXwpWNRS zvH-dVTi1O2cJ3!j`hTt|0wZpw({-MK-vg#rze}zziv2ieHJWml%KIRLssLxt!qi5` zRHDh`Rk4BZX$@f0J|455{&KJ}t?KX>?jMN=S@P0L)2A|wcmlo?VvMd#gO(fKU}LlP z29IzEp-hZTOiWjLc#D@yL^-XI?5>UYvFh2&=BZaUWz}CAAD9TC?hwE%z=l68&QD4N zJECKF_7T_3*rWWnnrwOA^Q1cv5d&%z;y~a$W5=>Ry=ZJb*aM0-%%H#Yag`z|{n+};naS6`6J*tkfe-jwCp67AVGZ#N}K%VErzQk&+Z6@MX zY)*oGTvXw-5KG#b;_bMdDrhe2k5}W)x*t6DqexB z&Mw7ov$Hqmm;nQrq5@hImV>;`M=!1{~CzR-_+aM<%SRC*yS7p4mV~rYS-7QU)R3! zx)-ommUctC1*b$skUU!ZX5_A9V~oV|vH&N8k=X3xU&LxaA&Sj1z0S+Y8xK8Z1)%V} z$8mXlyx#jsJ5hg%)Lej%>V1$aLg87G-h}Pyn7@%0z}^|KHEziq#61Ve^Mxq*(+uCk zi9V3TYGVLikdqi3bk@S|LQ{le@ao1{4C zQvFCxg%e7eyc9=7|EkGSUM&2;gQIEHr)g%7{wI#?PZ3c0bzW@!5LvJs|ENikOd12k zj7OlBUT>ot+=4?s2BE;fRUlYs8}Zq8x?G0?16t2C&KKj5p}vQ2Yv(}8ck1|3$`+*; zRz&;?qh)Ceppvnm;JA$q)@Q)&Wbh7Ugc_NUjjhj)lcA0c$$OrmK}mm?i-v{+Y_BzE zorzGQ)&8%Xg~ytYW=0~t&XU$Km<&*5cPk80LbhxzuHyT7JF;f}uRlXi<;P|8zIR{|jOgVT5!q=ZWCOXn23A_y{yr26^%seB$TcXY znRTM7O$B{Hs70ivhldm(>hP9a4k-GPOKG!O^Uo!Ck!N>0{T?IWHR7zDVz8QJ`A+{%T1gCopZN3c%@*c@BfI|d7V99AokhcKgdw}cqIw{Mk4#49O=Nrx%M z#DI!==Sfw97I6EK>hRpo;cXI@;layQ+SXg3P{>le5&j7slcdUTxLND!yDK6fW>`?=Jd` zxDT*V)Ygwvfzw#CId`5+sw!!hf}m{~7#mOhUP~0BJ(sq3zx3)^CaP1;bfa}tb0*z+ zFG+^N$?2fl6>qs`!2sB0dYP-){TA|$ynI^L&0Bl`HJt2Kyg<$>;2mu6f0kDPZFL~wes}Q!Z8$c>NfPo%Ql6{`0 zXxgEn?O3!oYfQnj#E!5w%a*kUWH4iUf1)r=y$#GtIyL_vFLyx|`U~NIn z#2PDda{TXRWkuP9O#hU#2ELs^-s@oJ2>-~&rw@Bv8Mpu16d!y*d7{(KIs8sbHxmur z7@IN3tGTA-6TEz`e7sEt>GhG0`5c@E7C;Im<0-P?YMP?V+1c{2B=imNIX7RmY7 zX9Tu@prJm&Xcl`E_MTorv+rd{O0sjqMau2%*c8`~?))~|VzsXBz$j0GWOeHiK zf#R2F32t*v2Z8(^zF$+Hu>Pi^`$b?dzBe%8nV!BLRxq_T|Klj|Dt7*cmWB`Bzt6`l zuHSp>?%i1MCgl^ms}xv8U~~^!{Qx-Ht$+d1b#Gat#_^npP1X&{JqEOAF@mxbx>**6 z47I>!uEni6#l7XeoUfv}LqW%Td{Vq00UIr^sTGv>uJnJqRTq675X~>kIDdycWC%+uy?R~NTd9|E~n%W>=Xz`}3O{uj6FK(@FD#GEDW z8JcCxk9q&27S8`Ih|b6Au*pRFEfm6^f@I!Ku`Vzs5@IvR(AEK4XR}l8cr9w?-}vp? z9Uxfk>wv;+YiyOBLIpwO-$Fg)F@P#Y!Yf8M`zK`6+#Okc9QwgmS_$Ol#5dm=i42r3opt(yT^YEEhLiMh{G z@&lj&)zzWG3U;45$h2(%P%Xp;4kRJDhKqTx!>xtC-yWg|d>WR4T|)~FD$;X(*GHfG z9j;_Y`%SF@?7WgjjLIp#SJ-PQVa(faySeiV(2nIt+uDZ5rUv<+T z{VijApP7a-Um??Bzf&gY>*FKi0jjdu>FGaQpubC>{ko?MmaQDx^8pw3pUvlcge(s^ z-2cA|_+N=@y&PYqAZB$jSz&G}1v;tx)xCrW^dDF-XX2z-6j0}4dc-b3j%xDzdbS2y zOSWqr8jj7!4%1|$u`44M1{decS3yee7|cY(K!i%%+(@%8b!a_3DFQhTW;qwBD0bQO z+}`d;&?tsHmWcgb_HhUMi44VXHliuxwNooc_R4g(JVS4IL_hJ;^; zdZytQ0qV%q_-DWouxlLVL2qJt1J_vefMYa5m!6sZ(+w^2>bzmPZvHd>V`jpHtb= ze*b9>d)w;=NwO>PLim0i5DTuZWFr7_F`NM0qd2PpB+vvCTa0GN||VuELCa;v-uo zdw4Le{m?Sv6Ziy!_Q1vvm#8@q4YIwm`jbT8ZE`fa0x0%d78#YWm4R&J&GNu6`5+o% zR^|3dbz_4K>ExfK;{aMlF`%9XMJ#uP(XFTYauhA1I75;9?w!2cm&{{e)v7W~!q>SX z5P*>FMi`_#0o@%<-$C8$XCgAN7E-KH`;*pa$=5r#E(<#Z-hWq>Tk#QprDUjH=U2;R z)XL4wd#@z>ox&P3Z2~`1*h<$Jvi>)VlgJV!ESi z`_yCmagr#XJa=@Teg}Yoql~PqD*Hx9i+cKI<}&Mphos3>(d%-%XX_qg&CRRn*+ZPp z>|*afP;op4F~D!6lnelUc-yd(`*yy;lR2DPZKzYDHRstGr@qhDoj?S5>=N~m#z#02 zj`^Ozjke?g$iwtsE~H?~Nm6p(#&CXjfaHuvw&2)hq`VyQjvPr+gn~)a-ZkViIaPpA z-~3u2AK@Rng`30I{Gow&@jZA_M}R|)**)UE=0ZglEZyifza+9@)zHwO#^7S=y=P-s zMf2s~gD%d9(zxr}x_kf7_MDxilf7l#cH-=~wveUqyalM)cIO)~x%01$#5>B9seZeO zzd&4ohOZo>3bwgE6NxEjs`~$B+V=W)+P1PyEcK@boMKginvPXOKtF&AeP*8c5S8KP zpMG`|m(X~+bPv-wRAmP*Zdm()%Tt{#CALO5Iomr0AsUIs+034monf~M{l&IJc z7?e`1R41M#ywKCrQ3d8?E#Zx{T6dOR*yF$&0$mz5h!Q|k($S^Fet8B=&Wp=iihJmL znVvpHMcvb&(fUzffts$o^FHHrjjJA5WE;D0j4Mt|u<%NAzXIki4nm6BTJPArP=-~+ zGcK-g6kDV*S7?vNcNSdMC1z(*Kp5zCjNyaFj~~-9T~+>OJh$dU@I?rw{|tui$(azf z_}p#Fpj%?}`LATaVsFZmm9{@|E@vmMH9rXEh$(1=?oNH@oO5Yl&(CN2Ir_6NL|MBe zUo9}c!%^spBSXfMr_XY>e>3iilJI3-3)sQ)nn2E;|Fc`$?^57GGF$;=zrbRcHrp^E z4yM$HhUI~!_zh4Ea9O+tyMfU9i*r?Cuq{|BQuAGE7`oy*hHMKU{~LXqmL;W;#kH| zNLn=zKL(7~!V_XzYXhJY^eFSgNU@i^tbN_6b8?DbWb7Rt=os-DX$4fPb-I47eb8Jz zw=u8WS1^H4V@}$lxgPGcuuSYJTtYwx+Ud# zDjiS*b7xo-W&$|#o*(<5EVtJ;#*#%wFVfDI)hGN?TU$q~kc4T|Z`E>N($(K(+g4 zpAV4V%YT{1-rl}&yFL`7;6o$f!;NoV33~00%b;J) z4c7hsmEI4-;q+f_{K-=Mji21b*fsJi&_uXNgsPu36^G14L%RLWKLcmZX0iX-x;K8N ztHmb_aQj2|$f_{=2mS2wC)NAwlAJ_*@e(qj!EV&gbO?-y+E^ug;)B>fUjgV83C+Pc9#)~|MOsbK9P zd}L%Z7c{{S&eY?yneQ6u6Vz}|RtfZLKk?S+ev==oN%*DZalRE*<~IM#g%|%_{;Znm zT5!_}P`$CQk9p(0wD#(s^dRU*X|79BRasUiJtZRxiH$B+@btvRa&dmVuk$NwEt$E- zV<(o#*M0M6mUzL~i>EG;LDr@q_XmN5%_Hb{cEUDD!XqNGfB&`wsPN3+KNxje_X>-O za`27fUqvk}VNN2X2gvGy+PTJyekbOPhajEM-q8^k9i498lUiuh4*;Z^ zWMd~y&A~1SX#eGXtDnDqe2-#*St>76s4p&bZl5m9U*nBKa!VEmRM}2<2<3qO1=58q zx8!mOTkSEzN)nf^@u@1G>wF&=UGnrg84L<}LKiP@-b0f8?oH=pl?=`XB)Av=MDvcP zXK_M;T^L}0N8%CquA6`DI#fA)t+8W`kjbyOEnkVjrR-XEnXu$U$#7$El!Iumy(P(A-=d?hVow2XX zR>fC-HuvEqFIomHNu+7Z4@yoqZ*q&G2=(hip!XP204IQ##{nm45ln0V|bejF>sm;$1Y#Z+X=M;p$QI{qhk#fue&f3teUi7s-Ku!u^5kpbXi{&`FD*y zBT>N0OIHzzyA~s1JwVsj?)}&IR9_grttSkxgHG43REn#`oQD~0-5>Mf1+SB>bZZty z3>YGxDk6p~s<-R%K&3-%oB@pt9qFhk&|6aYe--ha9J5AOn@Eo=EZp|Qp^YpP9Z zy3Lgp>s16`jHFXCYCJ*OQTO|P0!_#{7w4D@KdMX)Em@Q|#xxFZt`uRhWH$o~Ph|^` zDgsWfy5QhF!P|jE9~Q=}N#09&ZIF-(+|(Ez>P}Q@xd~9kpS84xSp1nAt^S(7w8<2L zl$%d`k*+K+F${vFj`r)<&qhYXDZpg!uYj*%=_J;!^`-%MrGe2wHtjkyfg85`xzHK1 z2V9>hn}l!6#Re(0dPcsm$^;bvgI@~uR>wim2iKPd+*}3$Fo&sXMTUF&SwK%8NUz7` zyQoSpE#BC5D|i+3GrBk<2+SY7!fc)naYC!?UG${vmv(*=3iC15TC z4|2PnKi?|XM>S2f?gJKOY=$90dpq|anEzL1n;-hvds{Ar->7h$@nMF%@N^PZ(;5z8f-ocoxo@Nl=?;e8>+ zBlDUN@c7O1y}sydX$kXNe`tdaQyS%vnSh42S4~14u5Vd}T|qo+?ey$Ms;t@Cm4r7G zv?Ji9K0=v96QCVA#lZk->k4{%3(J529^!N63TMJJUNnefb@D>ly;e-Oq?-_qL;FyI z1dYP_ylXBKc9U{A+q~zEM=klP#Rd_0vq)7**&lM+$OXL6(%L|7YS7pB@WwC7OxCbQ zAsG7lHJ8?#H!tUR={NtCIBlA$lIJ1qG2{!`ye8h#JhkO*!(TN=Zq43VY0}ECEbxT96g0E zipXJO7r)w|z08>rX11nRmOinC+6a>!G}r(TaU$++wgc*%60GQ#k0vZOWfZVe1wRDS zUDc>MMQM=_o}5ZPN&YWym#+zTmY_CHMOy`I_#H>6BWPhSL? zfifD^>({UE*f;bLkvP8OHKh7#y6;FU9F zrP~2w@Aa$#gdT{W*2xauo-DcOAlo44rL{^et^{??ap3=`wNbQzulb=Q3!|;QRplVC zBfJCN+YlFZunpbYSO;ck?*QRYY7S+f+Wra!!cW$cJ^Od8=nF@Xyi@4}bNT(8?`FIo zX=ViIBi$9da7-jJd{s65itwq@nc%hf#WU`_Z~>wiIr7qrpbwv{(p;{8H8P@I<11UJmzbjkJMi+SSUULyMI?tuNWN4gY?@(Ah?jLbCDE-g z;^N*FsY>|5zl}Wt=FHt;D+7ocizjLZ;>W)U`qWkzF%Fq`)1LsV=8auHV29KQ3ws>j z)(1d#cZ;}3F^eY~)9?&@!l`2u8eDfu)YUcfV7;siV10?kdyO3|17J=Xv50h#;95j; zsC9p-9hy2O;ISvI%>L>QRYtG`rpz1j6h*5H!Att69`x|0oQ+uEC zNlMfi`J1)_k<54KpRMMZ5&r1km1f$m6xi!JOsr;n!SV-xe> zHH2$Y?50b1hd_`2l97-VcuUe-A$=}*axDK09cF(l7iZY%za!GA*Bq{n;~EuQZo}bwO~ct-8hro)H(nYPGzD z)C226%FTO|F_LzFD^$^a(`k0LCpa4BMd99w2{S}Nfkjqc-gD5ry;c3%=4jApzkYpP z;mQYU4$@nyq)p=im!X4g5+lHoqGZ$`ixX&h-CT1Z5|b3E^=m1xE%c+rGp-|J0l|hW zlJM?rSiG|4qiKW<&4$1v4fyN??k?P!9bOfMcGWxX+=l|zxe&DG3cAlQATFeT(Vwn?d$rVG_BM zji)W0&KWyHQ7IdB$kq>3A<*CY4RRzcN;)kvRd%*dS=%}~9zvl+x66H(8EgZ9DZQCg z;$DXTq4eqRj)15pg$o~+hLaN;DcIrNl)Ui)1XzqTKxbs{=>lEht;8<1o5!U4l(?~ZQ0^6u#& z0p!Gl;Na+}z1tXjy$>)3ju^$mCVWFRss|6Dh*Vs|qCA7k`f&cx0eD8k*9UV_+%q7) zp;W9=mNmg~{B7;Mq7&Uu>eJY;sm~lv!l&~ZGap2>2un)~szmJ?+;8o>I5XsI;!Ytfhcs4 zT`C7qqO^41(UG*4ACXsvMbxi`rXTySR7u8-sh5R44_;~fyZy7 zuVXInJXHuw68Ju4*8T8!*Q~qM=&|FaL}xTPS#zosxTBj{;*#Zl(1|i)Zu2WkP?{90qbK&wB&5WQX{; zj};72`u2jCjv{22;d#TtMR}Jd6};=!=F3xJK}A}U|NLzS8-)L*BVpRt;BXVbVDWb4BX#0vd1FBCMHdAr6JZ9lH#MgT6o4&}GDz4cz3w}ko(5YAEX)%2h7zydZ&11h;* z{m$W@JQ8ur7$>NK@O+B0l5cCj-3F1v^_?7*Rk`i@^I%l^D!a)J9?z+{tQQ&6g6KN|IxGcSvGP~B@QJRJb+QHZ$8b} zHI-Uf-uf!x7}MHfFYirbHB*yeAlK@kGSQO)2YWBJd2f|N{kR$&K%tfW| z*};Wd5g36m;G0afFYy(oS=j8usRuC?w5)Vtf ztKZkhMMW{;8we};Ivq#<1mYlWP<5At=UFPzLw>m8+?y#hZ}x)xr|w7|6i0>3kf#I3 zCbf=x@gs6_v}e6Humgg>7X&`7-`I@)4%z`onnzLE0)N$jQP}lb(=*@9Q zLGr`}8Ku!1u|kRK6Xz@?3u4Add&;h_LtZ>S=iHi0ZxZ|ciU84 zv~AA~lOlpd!AsC9<;#7c`J(1KALfCvzIFSmsnK`|=g*VT!Zm}GlxG<@r{noX|;Mw zQmVRdwG|ZhRo@12Ui#19<}sA`UzpCLCC!lkDKp~Z;S^Yj#Gk#`zaE=mIk!ladWCK} zc?3AKYyiqNjrfgq#!v_Vs5P8osLO?A@ zD=xo;6A!lKz_smZC?KGd6$8)0Ye3ms%VNJ>v2{;VlNTjNaizBnof zn3cy{4r?!(6ldDJ57xwm8ne`ZkUFiNP^lDtw%S2eef}q}!ycw_gz25dC0$NwKBlZ}Q;(NIRa?OH z@}P*D15~EAC`xPrPJ45rp>I34?i3OP7w5p9DF6wi87M;&seomcj&+Fc7Xd5V`w5f(mK|1dK@TBrfe!Sh5A# zstr>g>bg4d6#XeVQ?}Gp^x;WK#y7wVm$=t>$}DjqVU`&gVK>aXIA0!uWQ5r8E@l}C z+=j+4?R;%Bw+XbYp`S%-l^V#^DitwojvbxOJEaIGj{ys z`ha&VMZp5ScS|-=FVZkdWlz59ikayHD|g!_k0cQr>btsibg#?2`c%_A#gP8L9MFM^0Y7-M-e#5{CFybi2Gbt4sFHlBgxs_W6EIu?^CM@T0*ji!fqEw z$21n$-Wc45dzXF(aszuM#eL|GmxQ029lUh!t(^th$Z{Y{S=Oz{;~aFM3NoOtu(amb zfx%AmwCJ`-;{UxICDlHtY7{`xS6|bk&%*s9x&OZ-8pL^ij=w~gtZpValY(>lnWBal ztxX>aJYJ1cetj^2LoNS!cK$QNzyh#Btp7GTmr9^JlbT0j<|X96urzP-s$af ze1wm;@Fly1q^9WbEzcv5m?*ySe%$(7&Tz;fMWPy=utz@$0zoYkFoxOF;|Rx3ftcr| zW}Oojs^cI&1~5 z@1u2KnlifARbqQr)@|ecpjH(`mLuL&lN#c&a%sbKeQO+%vRM!xOjR>(?|sy7Eai79 zl`0J*>q|F7yPcA3n04~%GiQtyXCtuEGYgd(c(_+tKOX?c$6I(4rHMf)uHMPpu zDxG4Q&?835*O?P*U7y|>=k^BxiWSn=p79Lges-Wu3 zX3UQ~#b47}6~UIlMdzGDg~(#l5n9X=yVqo){V8TGUhakH-ru-1}o%;J}{_4aLVWjEicHYYR&EF=+EM?6X(q<$PaeXV` z6t-l#`>v6ko=k9QvwDx7q-6uKhd7l@U^5+zw-UCWf9Hpcdv2y$r|>h+0oiwii)j|D?I@Fij|d@p#9+pfDE6%uXTt&E>% z|Git)oVDc(ozuqNzD@PlJiT@IKL=Xy`#Z=${I7e?k}t=T!!NCKsYcy-EBh~ODaihe zS=?I82cQj6#X7|XpqE;A-yYRa{}2EfU8|~sd8DKZlz_$Wex0wFcZE!=Dp?#x|MU(T z^d;^EfDVS{qn$Y8wc)S$SIV0*F_O_okCbecu6;Luw{zG_l@flW;2oX$UBC``WA^^( zl`%z4x}_KKMw$WgE-RN<6`Uvlae;^pM?J9kQ6) zp35$Qjj{8Nms|!zJg12r-J~JOuea9;H8lrf+P>T&J8m=M<5Iu7y5_Wm*(p20g>KmFj`Af( zU2GHk;HI&s=x9g-wFS~})|orJpI4c|p8rE{yPk3PsFslFy!fn=sBAG*B9ZBa(-Y zfX)p2Ibt&Er&NsCUw9>O!(>3&-Se?gSXa|=M^(X4N+L$nMA?`o|dD_amFoee8PeC zpI8(w6A|%jS3&FC&nBu%`4XeB*P~wh4-Y-5|I^;?n+AgB8xUU{&H89zo_p;lwzL_C z=^BS%G7Xur{Fiwn0E!y4@Q90H$qf-BVE0?OnLa~-YkpodY<4gI{SlOZ6{6l>7_)Bk zM!dyI+LnLFZh7R_lB&| zBq5vG%*+Xrc@(PipHngT{rQZ`_*3rZ@cr7?_`Dk~A&Yl(r9v_bhMU5uGI^CGyceP* z|H7>&-TFg;x5|}uqwZ3Obft=6uH=cI`F$L!eH2=bp|!28LmFUU6At6NjIwS-;2?!w zTt6(hb(4z+aurlEBWCX`>g7iYaC3YXTd_AXvRS9M-I%Ip0O%)*JI~UWqY%753~(!^ z)y|u@svUQ(IUtp-wwvZ|)sfPZ>eD@yw3}&JntIONJ0*t{HQwtd7t*LrSlrL6Zft|fECW=G(jV%KJrV{p~%hS-`z4ZQuKnth1U|M$r zFQxxkFWeEAXm|v9aaixU$HQP-dd86Ap;H_-tC7R|2vj97E%)gWfY;~|q$G*~xmr-% z7?|OJTAsZ1uiUd{b3V~fb{3Oh8aOidxdb4wk|Y&kN@+m>V2AQtlx-@gOGU%pFLa(w zAzULx|g4gg9t2q5Ody_Yjp{7SWE~xiF13W_zDmGG^ONA3z&aM$>I zfHFMOv9Ym=4(`QyQJ(iuu7!EnN93&_WbOmG0Jk z3z`w1+>zd?H1ji30~s1^a((YIb(Oe-IaULzbghx$MVB&{JC8RHFddR!=h2u`+A6u4 z-Q@6FIMpH5dr_#C+MN;3gj(It-GeYsOB~Abi~>1yCV-GQ(hgMjZugEEsv5H(sr*&v zj>G9q1|X5J_j@6GYFa}7+isujIVk*iEBVA7A-9j}4@ULa{sLqc3hv;q;H}y@0bGTe2H-!wb>X@2`QB0F zJy)-x=U&0bpZ+W&L!Q#%O1`-OZK_1r^7368{mXOXi_969`0`g{zNS%vew~=m-OY|( z=T9iLjS>p59yE zZmAkOOc3%;mqt+LSust}GFOoS0iBd^;f~Xeu%O^|>asJ?+er$@qcRRT?H_dGEtihB za2$YLD1oNGk+@AZDTSNauUDZpP*`+plx@vY#9@dfQCD4hMiX!&s}o3vM?;4!DiCbiL=|Tg zGEKg&uN!8vuJlXP%~ohNP%tf4u&(%ED5krhAJyj(x>Nqz;pCZxu)f8D%v|=Uohx?# znWLK!Dz-B(LiPqI?S)RWni+QqvIMZ?vo;DdnLlR-Wp)E07 zw~Y2zoP@yw+RaeNe9WDyt=#*5#S_@Ygd;>B7{z#(NDWV{^$W-9=F<{{54xdMzCZ%k#_Z)|f@P zoQ%T422e%pzk+JX1|}~&E@}fVJZDH zm8QFXH~E^$FO7BDL^wA;&kx)SoYeu_kL7<5jsHyJgE^r#Kng#z-Q38Nl1AKhcgJ>Z zYp!=y$Sib{Wn-vpx!S)BgZxkvKsHpzhdQ&L!w&He2(xaTrnT)#+Utn~`AlzPQW^sz z5Fshy)lw0&-dt#iWuIAQMMP9lJNKl~aRG|E-k!IT1AGV-1LL z2Rk1!h1bctZO!!}c+n=4f>k{#MG+qs}3O1@$zJv_UAoAX-=eXmmt4l^#?wj>7LJ$Eu0QllL1VX7;D7d&F zgeIm7Ab-RqAR8LjHTqml{R49Nxe3yL8d%Ej^MZ8heb+Xa&<+IShqdF4&mm8i!wSZp`R)EKS+j8aU3BzGX;(NirmCug9mQkn`DY z43zGi{uQF4p6jjWbp;|j;Rk9KQghU|Ovxk+_$uo$7w*WqHTtwjWe=>mdwb=J>O-d< zvXMz^Yz=jG-tZvafUdNVQ!_2MXg`@jvuN`XgMU(6;_dD*1>9#(0;OM2NbAH92$W2WCH+prZ z09b6Q>~NBn{h6@d$8_9obS5FZ;m8-Ss1VLvz^oZayGlBUj3?2bDz@yu z;asoXpHOAEki=4k#-3qkYzA}eCO-vx9h|%nHEL=S`RA3YKRxQ@;fc;-ED%jr5KTVY z`uJsm>!E6ig@>5;2Vzd6(?>}Vm;_1jrI6chjrKEIEn8u}joS+5@mJh&_RYke7@(TwZ{*!xQ72XKB+i3w+q^GZ#7BHidL>btZ@l1S6;PnI=t~X3OOZe~odu-9jRSs%RC&K$ zI#wwc62Kh?s|t5mDINDL>l4WL@8%DnKG)hhcpN{AC!9fJ41Z(8ls3jwR4!hovt;d%e#pmcm@|7n^~n>+C)qg48e@U6rc+WyVXIvi zAsB{Z1sI^F{&t7PQNJu~gCo4+9XXTkdRlVhJoM))R+Pv zHyiyuDs$w~ZNI{hS%Gx__xc!FFyJOKr_CjWCd!~D+6AZj`ux=4_VT{TfC+#FKeHRZ z{TeIq>2ps(O%p&a4jC%Kc>FIAJ24fBZo)p z>iisG`n0~ETL4Bsn+~eNz9RwLar%V&r7Ii|3L>yr0ou^6KfAy3xb;UU2eDJwpP1M$ zm%mOR>UPA7Gh@2p(EdU?*N~WqjBf;B`G-WC2HXD`9i))Pf(xlQ%g5{dl(gDq^**!) ztm8|@MA3b%J8^k)ytvct0cRA`-SKzzk3jG@u%} z8{?OCiuHq$jYrptN_1FJhiSF!Y7OH}wGz&3 z@5;~S4{?VHPG1>v45m~cwdu~JN1$;NXv3z?F@-=;i$14(kD*+XkEZAw%rz7(zbBoEq>9moH4IIj+JSN9z{ZDvPL)aeIZ&wJJiNzIG3 zJC&ic|3#bSG*cqY5TZ{fw&OeSr4U-u_q%Iu58?buiiAus1b|+h6x}zf!|LQ++kT6r z8gKY*AFxr7Wuu~bd$Lm3=jX3Z0g(_ik?-Z|(y43qJvyc*)ri;F@rw`c4*4Z;TYrY$ z#?Ef~yE~>q$hHwyUnjO>T?sKP6s5yiQYp_c>whT7v-k*3Pm%$L-^wUh?52ax77B@j z@C6Dk9agN>d#KOy`xt@mnp~eC)TKopZcE5w@PGQ}88b34qWcQnr<5#`$s&DOS(X$( z^E(!aA?XHdE>WW;Iu62VqKv)@BFR3D;*7oU@jY+V?2+Js4RSzk3d-c}_F!>Q*OjRq z6RZcI8pN>{?vSb`!{D7C?9C_gNl`xPB+53kMBSvE>or;wG!g#laG zu97BWr?#|&2-ajK2X@ZO$ADImfval?;kCbiq(ZsSMHzofGtGA0rJq}12dDkNCbys; zLjT+&qBj%!Vty_{^JniQ!a`<4fmleQKzEztlHcek_&V)xjT9s%0@Xzd{L69bNJjJ0 z&|sio+4HPY#a$&^+$U!!WeZ#;EuhE3czC6>PTC!~l!ZalNK&Klr7vW~0f0iZn>(@? z@AA9v&%!k!bvSR}e1YYl^3L@fC<%(8%q(RB%^PlyDy2N!5DX?Jr)eI@UaC_(1h_}X zty5C)aJrV-=n)1-r^~w&K1+j8c6L24Il%6nS(xipv!*7elYV`Ru)RY6`*%;^aK#lB znKySmO8|993M{5mW!>rf(xr(zyQ5oyL}LVqq9yKzOc&@g_l>_)dhmo@H(lFIWeMZj zdpPNgC}}=ECeV6g)SK)G&dai3jl%i<^{IMy8vB_V(hQ#yzEnA1=Bfny(8Wc%HO0%cmghK)zNPk{DvbHfaskO79? z`mb-Lp&vVrXR3VfFu<<*M0Yz1?bN(0wMj}%CKPcBqh-HJ+WoM_NO9H#ziE1!DtDtJ zlFg87`Gkrz`%iQ?!mEC@A}>$Iz9}HE10R}uhh>x)rFi_ZVr0JlV_7aMROq%o^g=Pt z9;kw~`xu4(p@9L<_v%YBkC)aUtrP8bH48?GPQ)9mSL(g7RSp1W3J3ZoLv+~WM>m7~ zm1i7cwD}C?QgUqQJ@uh=i1&fTDmPB`htX zved40DIv&G5`wfKBGMqSbf~wb6t?{~)O6!N3177FOZqaVU{ z6X5$YHs%WN^+Qa-)Z9`PkP8d3B9FQ<%$kB#5&a()e2ReK%PKN0t&^xtic?!JzcgLA=lEqfZYiT zFk`au^`ePAEhng#_w_W(Nr40;0iAb} zd%3S*dITtcEH!zr1rO$-3P70XXmS7GVBfbB3=W^NuorYj76;2tds&r(zjV45)|#QO zD`tB`up`&XwB%%LY%KZf*L~mtY4sg76=lM!d zg%KjK{T*^bI+%-bx41N?byr~mj4b{D_~zL?{FGev)(gS=GYA?cHqXw9Q3onk<+!;$ zaV~P8twUT|0fS~5Ld-n(xF*N;c(2->Fj9|GSjMNn-BASzfK|-ux7-|(!FfDP#P|HlnWeoxt^t3pUN2qn z_t_hX1}nQ``;iGok6h8g1s^sBT;}_%bP;fjP0%lxF21(+`&U`TaA~1|4J&KGxbd_C zkohc+gFJFnEq*rxB}baWs9c=V6zDB&1az8YuLX;gGDD`>$aO=NqRIPrQdP!xw|=eiJR;1 zPZA|hwka_c8}yh87aFudDG3;oouWUhof5dm0*ghk}~gODm&$S+NgFF>8OR$@oI*>Qv?KDr#$Me9qQO z0LA}<1XeHPiV9OEcPm{p6>iPi&UNiH6n)nQ=TWu>a^;i=!v@~rW6Le)6R$cuOJIjS zf)y%^3oRO4JUum`>tt!|Q9}kC!_(TJSYuF4O#i&Zfnvs`_!WRe0|OOiSX%UzYxRvzUEye!l42;MemFZAy2+OvRyTxjqegXBs$8&NsTlYe^uQ zH3s{&+6*-ata2nXB-q>MEdzS?!Gp=wDXj>bJg#C}{ECg<6FX-^Ij#w< zR$^~b88i(?UE7>Tc|*x*?aGNX{!><+22X*H#Vt!Kmw~$S+-&mvNOK;p*KNx20yPNZM_~hu511oQ%W%=H@%#pBaLVR=C7Z*sf086t^2Y zVpJ6CUTHt4-6-1I&{zPRmblZhpsO^6D^xgWpj#^#cf{*A>>_LkO;YYtBA%XG%O<^L zju*i&cUZYs2zCZ~1z|fx^N6S)8YI2wa&M|nSWdr?Y9ThIZ95qzwy!b{Yy;=coS_N} zzq@UDDAvr`482IsgNd^NjuaT zOUvi-$V6;oStm=`p#|e!DG?EI3cl%o`)qp zgjtP5t{31{R86N_8(+bIf_OSx+QIuSFPbBs#z;eClm~xPKR+ujFZHC+${G!;*vhuD zs><|2`Ah8Z8(?|du%GsVq9sY5hnx(u%BcEq`FECs1MMM5BR^_ikDP|` z5#lHj&hDcf`#Q%V=QNcJ?JO6^g&%e4YKfJ4`uaOxR6EdAQsv*$=ZOMhC)>rAOJBSD zEq7zGI-Z0JRJA6|Nn_)wnZ-6g%X!D08!v)c<YY3{FvXL^Uft=x| z^r{^lw?IGt`b}@|P({t=Eu*S8u7DCtV8;;#k*vWuUGlW{=j#HD%b@2n-TeJI zZILSL$t3E)CL>OEDyqZY#y{3y=RUb7sJpt#DKa%w?tB8FRKVWR`KEmL)2guT*uTME&gir_Kq_eU<94*HCs(FkAz9d6jimQZR1uuAvXT0ccL5v}?;r3C7UIwtFRI;6)BR z{qi?AEjSCa?~k1J%Zm&mDw}3wz`d$Li;ik7mG5Gt*wzl%qV9>LBFfV-0*qtUP}giu zmXC;ROZM-=^M)!tVt@7|vCBe7s>)Pqtgk_cFs<|HXhIrYWCp_%%kIoRww!AzitT0g zi$iUFU(_$x>1VZxopjHM`Q#xM_@JtvEPQwq*tHlvv)=K=+3*o@-OFi9e@PC*XifbA zMpW`5&eZ3irUksh*r_1Lvu#?Re^Pn+-WASOV)B2uKf~OKD^(B7?O5szkD>PE{yv~* z8LD*8{bOMKK>mVQzvhE*As3Y=@?#j%ziCH~oCmTT@LC)lhx%j9W2>(c^Jo9K z`V9cDiSA+jBqby-K3Q8eBib1hyf47 z#iP%`XUFx}9d5(a)pPw=EWUksIrbIi(0*Xs8YQJf?}lEr$IwS&G~qq+z~UBHPMjYF z1sK>3C~7W$!Q?69{F|Ch);WNx)GwILJO8lXAG>iv^4ov~;v16;6ZOx>!H9NBxFFwT zxN^^S>eIcUI9He!#p^cgMye0>>grPPwX}r3ifIk5py@ECT2$h!8%=3C9UiY_YfJGd zwu+8~S>VAAhV)CGU8rS?H(ZnX_MJ7zunSALIKT)&T5LV!1(PfpI&WocOMOJ;#tknR zj%8k@-tsm9V>4Z1Xmtniuhxwvi)n`!ZA97K<-<`fp7(QjX~vz$qQ$ViN9Ov<(Uf|W zzzjZv6?JvTMTg-q_?C!cSK7w~h{^Oi&BeSRmaMT>SOggD*U#TkF+V#CpP)K<|z5JP9MQM(?xeP_6O|A zssh0fov}WD^uvkN1-jXSjP+f(HHk@t=?h0-JVhNX-DP<&Yy8zSDI~URTBA_ASS~|s z@%zufox&@1s)c$+GmEnY9=Wad=k%3&-rR~h1Wh(J`ox8CA57}py~t41RLPaKTmRgN zBY7noMXmP1MXg$c>bv8A=;qyLydHVC|KXiAj~&OqnEqqmG5pBeV(A~+KjD=~H~QiD zuFvxOvs)&v=+=lOVW*vUuzsol(SmOE7qOH70{;gLCg^IrT>j4u?f8ncG#Bp>Jp{^<1*(tb?U0#H6y=tPqV4 zz6%%mcxaN%#>Am|7}L?-hI&fF`&WSwwoiiuu!cz|0GH+JL*mY>XE9YC?6CCwe95mh ztF85d&e6|r>Owmk6C>hkeW5evq%P+Ps+F59p|68f3S;}k9c%Jdap+yhvXH74*a0#< z77!5dCdv4)+S98^;SuZg**?b3oRhKZ+l*^o)6b^~c)kf29y#X3(ci!nD~8jum#%*- zWPj^`bBG@qn-XgK{v98zJSlV7lS8Drrpj^n5E^>y=Dz}G?|@j~^Z1yHVaC{3MIK_R zkQY^A^>GB}Y~|Lh$A*zpf9|Y5yet(@-MALmv%hE)KX?at-bbL0zwBQP7hnCO!TbM| zGexgRA*ZyJaEj+8jk8A0G15{1K3yB_Wbmg`{@P>cnx!>ZN^?cbdZ1h_R&;^gWqrmx zw*VivFtr%}uKVY)xuB`e+YhSrD?P56%;dhr^fKh6D3Vv#-@NPWy_no^%VhE=g@2Hm zPhe&or9|-^^t86fbZgBdZ@HVYyvR0P z(vDzzfp2re6edEG&|6d@DdRlo!;8=qRJV;BR)qYoREs|8!JV zR7_Z_kt4j*=hYI%XiC8GWihwlMT5ok^)cPJdD9P8lis+Wlp7lrMNUde8v6S6(Y!o6 zI*vRh?rz0Zvm^{*6*t;=(9TsfYKlU)HtXMVTwYVW^QmD{e2I6$RMHxz-b^_bM|*J} zpDeEtMw48uGcS28?j=u~ym1Fi2e9vInNxUI-4rdFojj0!c8b3xPMPA3_CT6Hoelj! z2*a#}sr!Jo2V1)MZ|)Z24Xw_c-9E-O?kPE`s#P)rbYIna*R5YePUG?CAlq?}WKib7 z-VfFm#z%vd?oqFRh;ljD+w4c|_LKcKRfFqLeq&YLtpo=uQgnjqsArP~uqm z+qHBN=0DH^IUGjf#Ey#03mI4y_JKGYrJybt z8Bj7N&29CCk){-K?SAoP8@3Xg2x8rsml(Q(nizn9&f3%fL|R8bzf1v5o*s}0g~LK0 zIjb0>oshl4j538@dBln1$I0fp71qcG%_f^hV{IyZVH-j zr4BrD@k+DXEuHNDdFJlypUb26XlNZ1?&9y+emcf!h+H*ej>%gM!v75a>e4{FB%J?q zM`c{UX&X*y3oFh{Q13pvhl|+==iWSF-u67Ov0J-aAV$n)C=E=z72e)oFGObSJa$w| zd}3qM&IHoYjg;?3;9eenXy0h0^1u^qXNq4$JjOrP?+H43oW5Xqiuw&or|yUS9Pw;S zOv2GVqBDkV5J>Ri$}v+T#L3`kRr4l$lU%nRN&tpr#R+VeUuIVLaT)BQX#NO?(0qU@=~z{^BAfq8%LO;S)Zwk4|PnD#M;?ObQo|*YBxBoo|e8u9;VUN zCvpDj^$8dBjf>z)yan3G!<&MTFQR73>q+9_okAZ-n=XcnOi`L>?*=Bm*g5`^l2~%= z5M_$|sYvc_g^952_2@0O8x38uchQkH7YAjz-8~u#^uMp6rj$M%m8nw>Lwj|8WXQvy z$H!#e!c%qaQ)09v8$q+xy-VU6!m=ULbwt&pRgA0duN5#mn@5BaAIIL=mQVyc6<@UebYS&`;bV!@?%+bTT+H@hR|b zaOXfzmhI%v%RnykA8db1zXX|e^&ye6H@26Uy$W!v{4uU;qE|VJHj|IU8U6M8-o0Fp zJr|05m29uj_ekcr&zOuqmltLFZ!b1JhUp=?f{%}u?J!kCzqIv&U{<86k@Ntt^~9F~TtSbK@7XVYqbzn=*x!Z6t4 zFJNhN6`W2?Fk+oP3kDt+6dhk}958Sd2Sgl16t_W)sIOkryl8oZX$-nK6$D<+QOOhSf(}{`Pcv23le0 zp#!ZK?{IyZzp-4a7E3qJ40F6(H2OWSoM(v=G}~6jcG34eitc#!RUnC-!>Nd- zmGu~{%W7RjjVnrr{>Q27yL#-Ogc4SKX6MhH zm6Lblep|4~+PgjKY-Qd*y0u&Za;=QgJ(h++%_1upbFV8lXnq`jp6O#=^9ECzMaw%$ z=I0~*BD(+i;IWVsc;9(Gx~{a61D^=OT!5?kjd#cgj10T!SpLRkUO62p&X6!w`fdE? z+m|*MLpiSf-le41{yh&=zmTUX?MitA8$Xu}^IEcq*qC^yeDijaGnH1BlAjfDvNYmWd9@^>AIO$Bv zn3RNy#BWBjKRu(=hKj*=8u?Ixu?;qPZ0!_GcN9!oyxFbi6USw;(Q-&oA~{V1D9<1p z%4DOeuWwir9VV_#)%mQPIBh(y8+{qi1i>R(B9W=L!r~(4{?6`x8Rtk;e^qr*qP49$ zv+tn0`HsmYR;qx)qc8X{pP>DVgi10>fTw@tFUf8gcKbG%M?by3WV^LY-&^5&3;|!x z&fB3i9kTH+V`DoN^dqcq^+~+B8i?%&?|+H7c6xoB&Yk9_gt%9SgjQbUit?Y*&VKO} zp?<M^MCa9WS7wBTT*I&)Ek`;Ou)6bU2LnoHEPZ7@-x@$)F{GuMJc(ClNx+U&<|PR zNKr?sw=YApibYefK|B`w`}M;7|M-gSf8AbRU*}s@w+wk-_zwX?l`&6%B+Y$74=`wcrcNTG3o1__oW?dnP}Ff(3L zb)Y?aKJ_XLl=bzEYekrdz=mi%P9QWP;SdYUYfQZW8vU$mLDCo{I+SlV&CDS0u}{W( ze{P&;E9BUO9$F+MMHAYn#H^;qgo7{h2zUpHktX-8+-Wvor$1_vQ40u4L_C731jkkE zHLOg$^(yN<9lp<@?V8TYCVrZ{7HVW`JZC7-Q?%@&VFV(SF62B8N+1yDe-}6IJVkWI zz(}e*+=no`25G-BfgwkVMP|91<^0R|yvk4q-}gJ>H+62_)(X>TxReS9MI~b6?)L)7 zp6H-wx#hn_o-rUVewk3*MMTBRCW|=y_kc7{5T6tRy^;$@WjL@FTJCrPrI@{xC+_q8>6gkIa)7Q!~DDApY1L$CM zBK<2ebe6dNEl*F^rnX@^r1d=5T4~wFR#Bo$V=G`SyXufl3i6&40XA5SBBqZ_u=06b5dp)s!xk+O=`OpP5!&nRXZkW)d@ zwA`7>c(V0-`8{TZewas1EFUSHKzp^>vh@ZNaA-=R|4DsV+W0olO8s>3{qcK+4+JtP z^xMrb*m8qXsR%-06{8Jj$iq)rp)NX_B2&rHJ4r&t@}Dlh-t$z?u-6As_M|@Fl&QCH z>ks))4Le87b)j8kk?$F%IkL4xzP7=YW|J@??PrWHU|V^u%Um1|H1fB|TczI_AtwG| zofsyIS7Y7wpqsUeNHAKVM%^qOd;RLn9vglCi#`86C>Mq=?t6m& z;9Ay&57Ni>YW_SY{ObR95aN^1wjK4klXiCNXr5ZLo7T}%4d>&jN(`sf1L})3BQCLC zimBM1ijBYWWM+P#v)kcgctM*6V36BEjkb5di%<_{oELWbIbwUQhD$M@_BZ!-{c4t9 zrkL#3w+NC?4vf%&AH}D)OK_i35^KjIYJRY5!pWHtu=^sVcG3hZFZZ4v{>y(1+ zz{2>WO((lHGNWe%s9hNNoW*NirNp@cUhUO)_{#x?`Pj#|dW&KM0-RkhQX=GTUrD!| zwYALruqT~rf)uGacK8*B>bg>v-!hyF`bwtc-cq}jo1w2G+ssWFtXA0WEXH33XIHFD zc%m8Z@fBvf6~gN2=d9d)O%WRw#n(&? zdP6>CZN!@c!5issEY80cn z_lS!?Y<_n=fPxEaq#wBvtBQ|GMtjcBE__30H4` zgQ?wTf|;#0=Lzj)KJuWo2$C~oVrqSR*vlO1AleFa)gLCmBTfR! zkTE_;Zw*f))Yp`}cio-f6L0SBt0<-}vKnq7?JxHV3Qd3%hg%)=qI}S@1S`p}(6BJF zSLGxg7komj%;;^13M*i^2w0%n-crwRH=i3XS-vzNYtwFSY=*Wjco`oKVSHw{6X6=D z`vZmQxsTiRC=7^X^71+>?=W25l=M0Qn$3(9ERKDvcRDnRuuzx)$urLyZuEp|yy%H@ zx8rIRW?{(0voJSc>hEvtXxRvQPAp`#oP=c&Mv%qR%byc~!mh3ihDVpsAn)Yq4@mMl znjN-DahcyYne9(evWeQ?vr?gTP(?E7>8h&euk37^Ux9K=gT{&nvIU#-7Ot+-FTBYl zg6E;jJWt7nwMTTJzyI5ZUq)<3DXs2fmA-E?M6}D()Mc7n+037mPjh}xKt<_JcK%p; z;bufKyGHOAqNp#xuut@JukN9O4*mDAcs^V;xB|Y798i4r-ft-xAVe7FzXF>?I-WdL z{^6s1$IPX_yuD{2r}HC$kbH(Rgja^LCSNF}ukB*hz|TQP*7cu13X6XrT2I?8s10KY zW(k~{gD=rBxO~~e`#Ae`YmC=P3x@BYeS>2KSsr|fX=8;nQIOj0DIC_pn!~1Z^0@Wr zJN}x^HGXr0FG+;eIjD*o9jU3ag_UzqUL+NT%fS#SA*JSh3k)1AMf1HY;RtJr1jB4P z8?^NYlrV1GN67uI8XMEuRIA)nncj(PEd*MG_yk4TV9dALNsnz+NM~*sTn~hDyxY&3 z?Z4#Wv=k&4g-Pjk(8Joy1EP?x);(GBHkl`?{Zi}a@kTW-^_0U~yT@3rklcxT&@&la zGvOL;kke`JQfK0*w$xmCnCu}^0>l*AqsLzs(2Zd*gz(Jn?Sb?5MlQ3dzYzy*^Hpc2 zM;hRFIEJJ_QovZE3K@67AN`WScn61jBU4j(U4w(J6;Lb_SXQR!N8}GYC(pEU zBF{E{!t#UtAMDY2f|9Nxn@OtVAOJzdS#vU-|@yGT|qF@@`>QDJM z`XcT6&D?7~{^##Ye|fhpF2~HOppL13u8utwNmbhG6)<*2ITllLzwB{GS5xD=MCWB= zt)y5#o$})12Pu#~dH3aK=flG1YA1(*OgExYlm#h)L@}85DR{`BUvD&-2N@N8lrp_% zdYx|ER-Fv94(3TD6er6uzZ9J@y_>~Tm21k*HErGBF*yK$xhBtS5-|-9MF2s>j5d4@ zs$VU*AxG=eFWvDNV_*}IJp?-(5H!Jc2}RD`oeiO0l!?`S2Ak@JSNaT&^w{c2oHZY1 z31h9meqh&PFtANq9Fqf3d~&RjF#f5deR?_~B8)a~Ze+f2Lfp9z7&OJ9A z`^O%TF+4q+b(1v{7vBfhK$?!BGpVl*xIk%2poho^+=_`u?aDY>^Oh<$4P%jX>CXXT znH4NzjdR_Y9Um-S`pXDn5_WKHZ1YFDM#silWFl=uX=$a+ZMO>I2QNvMmw)S*mUdU} z%hxCh+{^6icxCl#S%bOM)yaZb>e?ugfvKBkC-2NdGQT;)e_hKlKV}p(GQ>v#l8~I z_vp>iSKEYL>eNut95*^YfBfgq#n)rAS!gZrG(wR57}!3yj)Ct}De#%PS)&|MGHEi# zFf?<;wL?m`{OpztWd<*@GybZz$06(m{;8k>-l5h>gf1mnno1S`ev*~hO8xWT-{pjq zO=@vIfSzlKYs{l#si<=4O#nHz8v~@^9TP$LRApslF2J{Z=`5J!hP~uyeT~v<+!K_! ze4E9l=qSfqj;mIp*8EfLRY=oGL>yV($_qM1b}IUpbI#Xnds{DSiB3{_oSD$}5?;)o ze8a{yl^nqeqw17^?vaA2PkxUsJ*a!j_thD-5}h~hd}|RFpc5kqRzxtjJcp)yJE0z! z=_yk&$1X0Nguu!y+y&`CAq^HN26>vD5jHf6uv*chLRxX;8yh-p*)dVYd_B;C;tWIT zZ1KR>E9~Um3;pAMnY(rL= zZ!e>f@vBGV)SgyhqwN=^EZL0inO2q^=ww+il=(peVIT%Ev7F1j<&qCW>v|#VAQgMr zvM)a9aH<{KG35#I#t%R6zHtOo7cCql@+LcbIO(^AB0^<)NK$`skpG8Cm3Mxl@nibH z!d(3|+((X5>rIBpdt~GLZ$w)n6VD3mODZ=Fxy_sK8zdp6JOb&-(#3G1f9=>*-YdQf z?JVRQGhg&=EG%RdCVv)nHz^fsrHL6_j@h-2fpF+1G^*@hdyaS8drkt}`3(H68`spH z*3H8)0+TxKbpe7rlh*t{YA5x%rud&Fa$&m6`;)GhAzeHm&;>(-9>fU7H5Lm)WTt>i zW$btp=Q_q<(=kYNy%=ScN5f3oe*hIdDDusaIlLWnEUp+k*;F)P^>jTD>rYVgDx6D3 zv}axVqElYiYCX<;m*Gq1)8U^qy@ggL!uagn0tpZ<=G1AEGl~ZfJXR_=Ylp^#%b8rf zXQ3qET-{KMv+|~4#Q-c!>q}7`EX@Ml^h>CL8ZjE>TRbkzK|!RBaE?XPR98+`)_A~% zQjTgl58;zl%<6EuVIycHe6ro>q)Mf1uGz5ZuBpiH{l}rz-Of)By>#y=sxTlf&_E+4 zD>&FbKm*7O%r=hrHC;=aC6QFuO+)KH(f8Js8=coaPRj(vp%OT^*I+BEN1z4Ge?QjI z@TIOH{vL@>t;xR^-^lJF47sQCzj>Js)_IRQ1IpF9JR|cWi4gXV?n!Jp=;fRupd6^d z{Z~%*LsAuI{|hrco`U)^6L@|dniAuOc2l8sN-j-ou=^p+W-lsAK`H3y({!l1@~S?q zORvo}4ehhq!K65FW5nuI$39fJl}%^2Qt?qvEN2yu?G@PI2g_v;`od$owW%H~h zQh+Gms&KUD{zjAbKp8gMhBa_1v3Dn@Z%6GH*;jM$K7NC4gOT|$rf>a?ii01`+c*mM z_2&*l7UA6dDbo}AnxCNJhXg&*{a!uA4oTg9gOIE}B(o(wm*x5ox&L0je1%rK-4UE$ zraQy$zO$(2jlT)qDL~?%ELXgWHR4OToeg{7o=QtsFs8L&3uWJKEmsNGmFKEI` zsI_!{Xd9Cv6yfTcLBJSDC+B7nLHKlU3T7uCl|YIt7d-dZ5+7hQojk`X0&wUeSyT(r zX&7#z^viI`|Kk^CXyuHi4ms#-74E%nt{y3~PHv2R(=QVK<(uxis{icH9fLm?T1QsP zRS9Mu#RwK7i}ISQHS`Kf*fWf^=al1v)Vr}myWTQTBI-CdJnRsWlEP2daMSTmlJ6Ii zDckp5|`P9f!It!)$2Ql zXVc+V7^6m~dApMDm;Fah<3RZVdsYL-WMtQuU<+0A9TFQH4TIzJm(Vk>7Cdi!9@OBQ zNsb^ib)tCho8?~xq5|A=@>nk3VBTR(WwlW3#7FtGvtn}|X2Bje^F?6zr_0~GeMQIb59yOA&Bq@ zzRuQaHY(4`${b0`m{3Ucdf{tvPLWEiC};lM_YWGai~)yyeKUSv1Ga40m<65XA_mxVGI3RgGxejIj&1ra&qcZ23_z98&u&n_OOc~eNrc?J3Hqk8SczH*r{shSil$Rd3N+G zl^qLNm>Ojqhg1Tj4n3|TgA5o8`u4y%?N)``<(*Ex6TFEYs?%yAY86g#cUc7d!;IY7 z_t7OQF35kc4F>Z{_nD9ygc>oT{187*_{AQVYi5+9TA{GW-9%{EVA?t_L8gz z$>MXRiw(*kxaQ*i5OCUOk;qp2AS6@=MJeD#s}$X#nN)e7OwVYf6vA>0`tqKoe|=C> zzD+Q8zH#!pqQW&(96y+S{GlA8l2S;A7OiB*+=Kd&A1OBTC*B#kFzp4lyXle$0!^t- zw)+tTrL4_cU_VQ{t)Glw7e7*lxFpfc_&kAP;N1Dqqa?O^ilX(6=kxL!s$=}^0f&f3 zy-;s9C_>mv`BFyV?66SOoiJRUfTKDbkmA#H4>}Us%)f)tvTi1C94uJcf&o>@6M;eb z=L!zkp{^-X(UNx)1Oi(-yAWGj+nDdgHbzy!2Bp;2Uy`+!Tz>tufB$Rvz{7a26{XT= zU)N~HVB_n9BK5Uoz&WFY%PIx-VV;-{W|zFuM~jOFRKhqpo-&yH{Zv~X<7JdagVyyJXz??OR@CSFMC?U-^0j}Aj6c^p=&Mp+uclL zd+^fhy_$#X6(LLQmDd){=H~ogngNN*SI#3Uem3G(>{C=-J@bmOW9xrq;Qe&vsrpRkQ-NQS_+9DA^+`8^b zVeFBu-!zk9k9ou$p@OP6&Lc-GTDD>P*G4zPd+0YuG{#{VrbCbdgzCAPt1QJrhkf-K zY*t)uHegl?LUF7qp*!9BHuet(%AFHc4a!Q_S;3w_$Z+)uQ7o=A7Bn(z+Hb*f;Fy~x zWuF|eSyZ@lvhf`TTNy87Cd!PuS-$g`qft*TqF<()%9N4i^~0=oy~&ZF>fr;q36olq8BRI%PPPs)kD; z_g*#R74HXq$2-hRX60!s`;9wnOU_)=ltNJxn14>gDoJW}YLHeo-aoQo+pF>u1^A(tR^sv1Ot1P_JOjdl)79<^OD)-1o zKEE`xMMPQ9>*HiSUy99eTc9Qfydj3vG3e@i7rl59b^chGItQ2*DI#z>zOtb>;_bFZ ze<|e-_xCJOHN_TlWY8@@8Y#R8Wx~z{^AYKnjA7j$rj;G+BsPqSecyX*PDbH=k*!%l z#zr8vECkYFe1(ctJzw<;=%=IF@pq~`ic-p;1%4j)(r zgN^U14yvEgekD8RU@*Hl8lM9g%HCx>3i?N_um%d-PhcYhW|fUq@L5|r?|n3Ej=dGr zn-m)wP4c>rsTtKv!79qMqSzl4SgR~2R&}R4uFa#dQOV;ILFc$UO7zp1vswTA4bfw~6SNl8tU@tuIlXisn0Y`Sd56o+ zL&sd_Pf#63!z$iva;oEE(F9bYc^E@Nq7*5@yj(`x^$No^sqBkM2VaJ0`u|}1AGz+% z{e69Ec8;3?jf#3%Lr%fKq!nHn4*@M(2P@r3rq6~lM8S&G;5)TJaLDT?M9_CF?oZji zxzZGNaP>o@Wl{P=D$j;QJ7-`F%ZiBDJ?ssY&WWs2@q;fyQ2*rjJZp+%9hNQ_LqYAX zVU5tkkI#1kW3R9Wx7!YY$6^j9k9}1iP25n)KK%Bb&`pg*w7D9h!l7E{=CRbi6`)W*hS!*p2 zHRN-et0F-J@IchiRXVVrJ)4RHHD5KtM!_umVY?QIuYsGw&Ekh`+P&JP zhY|C#QZR>i!8E!WQST6Nv%7T@{1=?qADYyU9^K1zFc68d%Nt}$y+d@`5wYcSwDXNX z_UR6hNP_3rBipINX_2C}Ril?}&4}e{TUO!b;OkZz5&>T3>&Z zlE$vR!!Cl92;Mq-xwoc^hxs;*4u0#jom0_USLAaXsg?^L92n@yxcplfftW4gp*y|W zgw}B5s)r?Bk)Ty<`1wciK?`-bBCNpVh%1J?;n5Lu1Fre8Liy!WDZK=% zGTs@qex(_#_x?=y+)bz)+D7Dg*@sYkgEW(%C*wjst#d@!luk6?F zFf84RXj6wRe5aPI$~#v)&i_*z4y8H`VQF1ZDpJI|f9Uo5(>>0du0h}^-n#Vv>a?QD z2U!Yqo|JzCJWW{*B8;6KK!qwpC$=E}5d#L+R4;3GvZ63$QiF(V>c_2G9lj^4r##?< z%;2zEDvoMnS;HdzducpG9p4(-l)n2KTlwW@pcsqeos#uUPO=n5on|8FQN9hgy#9F9 z1A@mvq|c0rw0Z^sa`Lcjx+~y(MRGXAWO;g^7*A1#^VN`xOqb8AQ+@HXGz)N%h5iYzhFFR)%apBbcCzCOZCx zrZ=IKy=cPJESF9No(uLy0oX_o54w+6dz%tgwIliL+-zzG9$xKYM>eT~kf5Mh?_)A2 zpUPV|?C!tg(xD(a(d4%1o@T^16h1PAqMBsTQKd^AmliJrU-Sg2TLHf;>}=W+3djKt z?>YUMrd1}R2!FeQukSj&z{9fgZXmk%NOMQKAJQglIjcIP8VIrC*edJ($`eJ_!!M{w`dF(jT|aDg;9hx=J{VH z62B5}XRrCU-h<3mgsgzF5&!=(gHCx&dK#+#t?QQ0fGbsF0-?S#!ti+}4Cabo5+Kzl z8k#)M`vb53)Xndi@Y#T*^4En(BKQZCF;uB>vO>e~UVV+X)-8;|V9KDh`)YZ`Wmk8R z-?#MQSIEJXUNj^9FrbM@DhOpz9~AJ(DQZ{1fyL!q#6RW>4xteLv|nh z{B({hSL?+e@*RnF5_nF{Uek2NWA{FKV(hXmeJN$PLc>)J+^PH1Q!Cp_ubFr-TvIqc zMj_pW^M${Uv1lh16WR-491gbMJOD#ohN{gj zChZd2+N%0AHOKswG+2Iy1{0(8=91?@*%w%|axjXyp^snLk1U!BgG!SB%m@2qdDPvy z_u>c)Jl{RJ&rWGTE|kvqV&wlyt6VevyTvu4O5-g^sa&U(Ne7!?JoxnfTLKigE4VJY zLPT4|vfFKM4{;W_k59Glz{0qehQ@cpbgr&V5@=}c2FGWrUd3$8mx+T*0k3#{Ok*zu zWQ;NL+>Q`B%q;K>X};IDRD3`iWh(~m9A8x~WRBsV8AG)uz`{sm&q57g(2B=a`}Yucm}vl zGvHgUne~Nzb$zu3?_fv834r+{M}-TE9SVVA_qalrcZZKM|2A} z%cwBMa%t)+T`U#$geu5C@*nb5@|f1(95W!X`cZ&HvV}@p^hsNECj|fBy>D1{u#A+I#0AfdqZKwCY>9hwf3&n$Ie=s$mO6sVH;G`C#e2h4-!fwpHfh-a?I8kU z?rl7D^{ZR1mpyS=<3aFx&CF)Xmx-MM=+je56C3K8Rl!u(Z)jt!4L&~Pi^7|Y9|uP~ z>jel1KW+x*0o+gQZdHX($fNAkTcz!Of-3RkB*@|`q0t15#gzI1p0-zOow@4F_dbe8 zi%oXKS5ds{jJQEO)3mHTplruL>@2D4SQ3@2iiL$hj`MLj>4m=!b0iG)b#$QLAT9Y% z764x*|c_-wT!JZ9R*KjcA>wR~P_{gSVAgvEVCbXZ9Ts;K@yQ zYCFuQLs9&lw1-(Z=X40W>}!Lx&$(L2UIz~~<2vDvORb$`-rKC4oCYrl1pUuY>ik?a zzVw&n=Onp|^AFn@H)UTC|2)FTH+9k`R4OtgQlW60>(Q^ozmWejDRF)D*8g&1{st%J zpKtYK4o7-4>V0q$%BGXi3mp*5JCnT5i~O3GGPS($&y@`1y4lwP3$-PrZz)}K(PS|} zW_AdQFtNd)KrxG4sbdBwghhPKkxGxc5;qB$m(T$2b1A%{{Ay$TZ}(%e~GNExi@ zkZeMBlz4})VIs`So-8ePe|+>c0WKe2WE}qzjEb~Vf7B#f!hlfVfjmyR`2^Llif}wy?{Z2!Ar3E^vCZ?2dh}a$D6KvQ1c!My4#!&-WHi zKa1ASSK*$}E@IaCIAJ~7Ug|`XpxLS*iv2{K~m~58E3vdlFEm z5b@~Jw)?a8R`9l4ILMsubxti zXsh-}8PKSL8e6o&f7e|{a^i#bXTGNe=g>0Z^zzT5Y{nCynvtTj7r$@}$*{VAD>Xy9nnCxS#le*+ z7$yWdFWOY~^%ZuYN686ZudY6X4n;lAw#grvSgHwTtlQ})$qX?~9*TVh9~uX|n!s5! z0si$GVKVeJKF7s!-#>M7QuaVg3z9Y-x&8Ddm<`0Ce|0UX1wbp& zTc5x?`<2C0-I6BpapCj2p`p?Xu+!ikFnb)D0LSAF$4SPWVQ5<6XxL$FSp86sxi0lj zm=FBaVlNsR`di1!)zu&DN&fc&-u4}Ngx_Ahtg6038!aKJYc~ua{qKJ|>HgE{ylVja zd{Q-erd#{})&&(t)e+Ri?0e(OL;w^jl!zKHGxZ>03oTf_=<4wE$M>(@9oESOgnoWC zn?#cTkFht8hr0d#$J_2!(n5C9X3JLDw;~C5i7a7IRI)Eab}E%3OP0u*Em?-dU~EIO zWSdg|9}XiUWwx}RUgf~n=yh&>}$XBU#i>`}^vvZ)LG1 zF>wcW-CV?*LBcT!)b=2mQBYXq`k}o;vS|z;HARS=lWpm&&JM91JcD94E!HmZ2(gETBP=~X723~(M#UoM$jnUWn=jFXT>G^L18~Opn+{py zc-XR`FWr8ZiU&sy?$EFSz5RXF+I5c?;C;Zx_4cI8ACQ1L1TEn%TLr~3fKtj{gfZnaf<^;^fxfRV zb9bBANS)6N7?>`Ec9ZR}5$~T~=cjmI6IE3JC7N!f})B_l1mo zb{YK*FzHpaaLh z3&$g}2idd|K|6O7H0@pnqd52m;c=pC zhu33F$weEZ&9pX^lw zboY=yAw?bUwu?&VdEx2_0EH%ypM>OV`xU-znxEtN!<98IT5J8pN96*^Z(yn1>L+2l zzE`sVb*aj-F%kj1fe9yeJq&{QIsiia!D_D2pp-ywV9EVw%$BREjSq2X#`1yV75nlb z1t}JK^^0pUpI@^3VtB>pxr4h+W=>pGX}pIN-k1Ht_kGA$W_I@KGwBJG22y^(!OL-{ z*iZZ!Nway%1?cDoYdAy>Fjo%i9ApiJ^0G?CX|GJk+jT@16yaP`q@;^6@8HVoeJ^&c zP)=;^Qf#r)RqUP5>CQ;!#-Quzx3WyfZ^h7=D`sicRxK+g&{r&<|3FxJsnvi$&&=eq zF$M*sF7Lkb8xZr?16F75s})Cwge^2Un9LT=hAu7tAz-xqxyEPIou0R8PY8M+^QY-L z9cI@Q6>L5q;(>q;|J)+ue*5+UWt?s~xiU-5tD>5kbK|HL53!-k)xTp_;|=6cAD+F7 zxe~$w3{-gT)iqzA&tsHF5fM_k2sb{&?>w@5L>NbRj?$3SfW(7*`u9kRGfF}GD!)J9 zC+L-3QB0gPru}`_&hcQ9w$&Bv%pc-=G=%!u=MpFKD>5!t<~z3gVGKWmBjC}VLzZ;+ zQ>~pvJkJx)=yCp02bianaZ9I(JVdi{v^pS~Y~Ec|Y8o#mwto3?`YmXNq=n1wvx*@K z7P*T6#hu`XBRn_vvWofb$qhZB?js2c4HbpMd{Qq8@QHu&F{0_%q_%Xa9yhTWa@)Cg z7Z7ulut!Xr0-c_RH_u=oi|C=prj;k_;sNsUt-W2!zeYT2&1RDJbx;e-+BrIPPXEwc zzD#fLu6u%pMXm)_-EP-IPh4`#nV--C={KDznP_b>T%wHs0Spx6Zlc2M?AN!M$n6KW zR08`#!^P%0xZX@4d9mTsC0EI@OkW6Sbja9y5+=sn!ABK!$5sEIDhZ` zNdS*AGxn;TlLY)|n1e>&@PX-ryK!5P%UpyH#iZ?+5PqM7z#sU{5!N>+=@}yIM8rV{ z@C7J#X75+6=24?#m1C(Ql1fWO4;gfwJ0V7BuYHDoHt!E|B7SIJ@`;{QO%dI^f8Jm# zKB8yezLQ|&QO)-L<05kHA#m+B=ELu+P0DK;JiCiLH*6X1zGQr{>DSI>R`}_Ry;YM< z5?>WP$jXz|RrwU|m(25LVx-^PF|isGpObZAm#7Qb-dHPWMG3eh-^B%!AZ&|$eI?^G z8`MW47PgWPiC8uLz4HZ{Fx39a%P&t*lI@%aGg^D^IC7eu)Q&q^iQv>H` z6Z3=V$}OKSWS)uVksg%OXt2JP4cO;3YwNX+$bk+vcHp5ho}_u*<(9O}p<2b0hmgTo zz6Tn#p%DhVr#QzN!OM?g47kQ2B^4@E*=8aZ0pkyj&OS`kVYI4fDTSTKJyQOobrJDwad*M*i&>#qE1i8scuoR=>* z&7)A=M~Skfr%FA}781|Y& z1OaF%!I3ygXAXpzzInR1Jj8e>B&kXSoLgg-h0W_6nLs%08Sr6MU%xstwn=a#vDR-O z`{Pv5z$gK*l9mvSsca-6bQp0scW!9}xH!db*53Y|Olr@`_##azZF>}}cy+s9bq2E$Z#yf{J^izwjD`v@jjoN5BM5@>iRtXE%Bx&nDR5FX29%MYLFqs4%X?Az;~O$3Jm znMAig4q&QcYCPTx34!^wes{R%+T5y9;3a291QoRdN4~==pURU!E?!v-S>Z=Cb9 zy0+Lg4Q*{ttueIBJS<6e&lCjXIODkENJ*gm)IU)2aX&O*#5{_m=mfB2myv;lI)4eI zIf@o$tOwIHaY9!uzq_{=dY8{8l{^EPv%QD5Z9n&?)fTvmJsb$JzVgmmnh`y#eGv!D z)?w~rzzkSDGEIFVxIf1~C8!Z} zjXfE%H~RtGKd|zq*#Eq;Adyr`=SL0EckkYe7z|4pyI*|bsR4W?3JEg4JRWJQ3WtN5 zrPLpkh!(tY@f~pcb?Z^z`O_b)r#<)c(~LV0LLqRsH4IbB`5d#fi^P=$}OG`L>cMHta4*gn9sL3rn{b5N_)OkJbkx{Osaq;^JJZ!{|}g zF%F%qy}qEO1i)@+eAopD;!<1TC^(8gu{Ib(?^h7q?U*6sQ;yKZ_7BHS0M1aVyvYld znq_F%lV*(1z+y%72X&NdtL7``Kg=^IWQ9EQM;}*$q;rvi6=d|A+PY3Q0($&YE?f(H z_FhgmhcubFm0(lC&1cgUps0KgsJMUwe9!eu=Z`Vo)OfG7ne1&cbGN+=w0rExoH8`P z4mV6&=^ON7J|0MpQK-3VB0wZ_x&L;VQQ&b-=v+Pw-M$4qCI+@cMR%@YrM3WMwlKI@ z_zv&3Qx9W`Z|d!2ysJ@1yLT7x0=}0}^HFpeBmoQf4dRlDu-kWuoOHd`q61KmuX5DF(7nX_{GNU*s`-J-*>lodPY_*M4;xOYD z*RWRC1Gk&@W)Z(o6Z1HJW+6Tt{249Lt12ZAB!Xg;EZ{&V)bhV6pJ zT(ph!ryj32{{CH>fFGxwViRP&I3I4Hmy!G*X^IC>c>2kh;;gj1YdS`@Z(o0P~S$NVpxZmwOvyXT&$U zBl~`&cZ_q4nn(YbpizR<-Xnnv zW{sjVYTL-vOoH!5u491i*FhadRpJv;O;i2kiE_^hzN7*A8?t1>3mba2=`eJEgyyUT zNS`{=l>85^LH#r2q)L&VSP@-92Hd}1O6~@ z&|o>FAQ;F{vzn)n70J!pEE(#DE41YrDf{y3oR1E2HSYj*nRn5}X34HefJpp8ZEfA7$inl2?TL2&0)<<`?DkvL8a^ZOLlL5#))4nttptwP!VjzvV*VK` z7wZ4@=!Jm(w*A?xV(ht=&TV%VDd)_DV{f*}TlAfEM-E)<=4i$e4xWoi-vY>ojJC!o zijXAm|J>?oS@Z6&&DkJ3HSGJLL!RY7?z!{FEO+veE+ho%njj{jk_g)F{J@QAeTQj@%_a0`fcsO6#t4R3Rxs>ke*J~PwJf+9}dmZ z#0gH?O5cIItf3(gYIi0f1SI@Hy4s2}5K>B*pAlGMxQ;l;Zu5OOt3xb*l~TgYc#G(F zm&mYsdRq#LYtpZk$nfkq5LU@@h~GE>03?>x$25w}8#Mn9<@ zS`#9>Qq|>)sT4f5($WX*gMNs91SeDMK6DjvP$u-ZN-hsUMv~7As0Z1Uo-PJ$q^ADL zS|OJvnOzS1wN>7Eu&E#Auba;c=?~?g*gL%TkV~E%p!A}%f}|Hi=VV3=S=fBP=ccl^ zec72QvCiH2g>BTe3A-9c|C}KGV}NIyCXP!Op9pMnnMs{E^A{5i|? zN^0~sG>XoP95T>gZGooYTR@5H<~07f5=**wUy*%B#z-N~^@5wL`JAVRqc5Z?Mq#b9 zAdRcQ9r@?_b)dJf1%|Q7sayvzi>Dx>lc+lU?k04&?-CPR`_5kEm;!s|*@6pG}96CUBr{@lh+` z>5_vc>ldhF-ill|N3R_|F1poZ@W2i0A-5hc|91j@xSguF_DKK6!W$W_<>{i9fO4_B zX2eTE%4Z`@bPs`bd+v2F^XbuY=*`*mhbcYUbM5g1=)AmYE9{y6c_N6ibVm&5?xviM zGBj)N=x{Bt?#ekBeGtUO6Z3+TXZ8D>f{nI{kp8jTIYUmit?0a{$iQ;S^u9mzqQADv^FsBMwZ4_w+yk`3l#1!$IaBSLkgTIhWo7O0&A5T0ftawxqwxmd z8RF?vJpElGNXE}{(s3?Pvlow++RWKM6;Ubh{OS_tcyf-1UClgeXj1zRn{4`&`2&-> zPBu*AC~d}+S<|@N#y~%-yl@XPXTmI=q_Kt9>g{H? zjCv+$%oxeTTepKAVJFsC4KX)7Wu};Y@~dmAXcviMMGcsh2(QUdt!2PuN{lG)!fA48 zT};sCVnExw6C)BMyWZWZzr45@s90K3k_0M;dx301Bk8lZt?)_@a0PzSgv!^Rapn%x zTabA8D29Z1Qv%YPkY3D6<-m&mO63kp<&}KurYRzpHUF*CZk%0lPKa*`k@^%D4e5dM z;ob!i`?n5G+ahcsP-GUr^Kov6rl8nR;@jfe(^5~K`8~ErdYA`N@%625}LGDXi z*~rkbe|_l9Cg8xiR~q;TTICW^p32B=BuSKG_Iv9!EkPSK(B^D_7LkHmAnpTf-5QC9 z+ID0IlnCge_Jlb6V(HjDtbQpgH#A%+d?8qia`Hd#VJ%83Qd;`zyHcz*=sygrPS&TX z8f9i#@yM?a=7-h=1hFJ}{8^aQoWp^o<1LK)-hQN|+h|vc%+ovRXW}Mogn}jn^W!;)AKbJ1_p4)Qus*Wm2$(sZYnF!7p zH~5}!u&EK6H38akrQPh#A(_eS8GvLbyurs(<0D@G0cFARx?u&1K7~ zl~OxjeviK3u!-pmpc{n|v0Ow&!QPjK-M$yz1AkGKgbp4U}z|- zxI)J^)CP!zIB2ylw|s0}r;Qy3m;#Em2gQYV(Lr5Bf;X~7A)#Bei5e~%GXcQe|Og7XTYTr_uY z2t^5PWXhk6{(btZA4(hIQBsi$-}6Qjs+6jbQQiashGCi-WdJEzU?PdIAU%AFATBGb z#YdI|@PP|fKO*(>*q+(&=M&@O*iKNGUb%OFv0AXZ7zCku3)#E&-a-*M$X5-y7;6?G z(`mwyu8>KV5MiuYxC{jrDH@icKGOL3!GzCa`8o44sh?TOltebpb*4h5)(cs_VP9!# z8~N`AMEl*SZ`BkWf#tZbs4U@LzgQUH3*?r-jlk-_e~j3|W>p1{w06UiXPz7lyHI&dw+XRyS6?^XyLay?l2H<- z?8QO1f{kTfH3_6tov;_YALq0oWN0J(?88G-`Pci-QWDz3C`g{?`ux4N$>}=D3f%s- zi+RHXt4}A7Frrh)JU?Rijdfnn8+yZranOG0_ij3Lqnx;b;8}ijmLtW9!*?J3u!g?w zuH}4n{*2vWA1Z59d^PVcnmA&6@TvFXG81@wa>a&>l9gITlZzc%~TD z>ux<%JG$aZ9MrTk9FL4!SVkHex1C!(_cO2hXwLEZ?w~C=55JuN%1Q)ifyPD1$s{^H z4R`}x1|!$F#!M_NO2vCzlFXyUtfk06kL?p1TiV*w^Rcbs##`#EbAetUxA1uL)+rgc z#c|WN1jUHB0E4_cth)=tc`gk9r;7H#QD;{8ltyPUj+q;x4XEi1R(?nNG>7YHJFRRJuOxOl}%_&=_*|`@c%`9g+a)Z*XYXUu4&fMuN zLMm2Q)lyJlsTy?*&3T1#s+w7=Qh#6Iz;&zVs~Pgw_c4RGEZT2idhkEpx9Y1}Uxx&g z1btf8nD3;@y!-H#`yP0vl!a~0^Da83XVVX$<6A_A=8e183(8x0s;y$fWK`W@d%Bq^W``T{bhO=_5ql-98OY?u}o@&d)HDI#7I zLih9|^odlxCiVqixpsiI}rAh<3x}bzL(v5<=c-w z>UmvA9qJ-z?${p3bC}OI&Q4^Mne?4c4{c=K-Aa0koO+SoGnci6ww&XPtbr+)a4wDC z+@4w@W zF5?sx94{iM#+-+>3vcz*A4+RlmH$YT;Z@JIOYpsqjT-nccVfVuiE5{xHLmp34VlZ!nBLJ-53q078diLbOBZ4+ZZ-RJ3V&7AW zcjsf&GB68s9yLDE8s6jsjiN-P9j;OYuZ{OwJJjvAz;b7_PZ%{kaA>MOMGyp-A}+yJ zLsZVpp)dJ;`Qe?k27lxLRdi_d4kZ9KgSI!Ssk_cdP1U)4M8M!iEg(Pp_*GSX`=o>5#K0Wny{>;ANZB|t&$zO@5`NZL z2;>N3-(MF)CH0W|noh=P!#0ZmGms^b6XKlS9_BDT75f^*tm`peNf){^E%n9CMv1{1 z@fz&BjM?GeS+tK2|AyjFaJ^x|yqd2aXAz~HHIbS4jQ`Q^_5R$3L4B2B8S7#Tr|0!A zU_b3!z7`kW_vYA$oTclW%IK_8l=FQVg2|r_=Gx}$yv;HhlCJwlqkd#Ug#O+>1VPRH znum|6a3zBx0^e%@Fw@^e&{>}#ExL1eG|yXT#oxsYdEWEVNNePILON6gJXNdI&yUBX zJoi2^a?WiXxZHC33ctzNPuZFrwcBvBQyt2;M*HadfE4}}Fp)$yte1q}MUsO6R*Doy zBv05kLze%o{Z$c=+}n$AqrWB&0Pk{I;n00M{(Ywe1(mruN*ADh`dV4aS$Y`?<1|7H) zzL=5MLsEicaNC?~jR+rx>>fO7kLD%hGKG4~gttCFLdXriW1Q?B^J8UfHz1T7M=L>0 zlUeidd6oP7cv2iJoWQ49XnYFuD^h3;KPq?d)J*73oMy*7sONq0@6O z!j(i@>IOWbHnv1b5(0s_FJmHE=Q$^1dH-sZ8P_>Ju87l|#|7$+t2U6r*@kPpThTl& z2Rd|MDZGT#-Fg5}F`ryp^R3V_&5=Oup=d@i_H%G=lna*pevDlSH0;O+m9!YX zZ7p!H;F9^z8*)wVPTrCgY_~rrAmkZ8gM&SdI{(m-AirzMUNbOVHBU$HIf&Gy*`A&# zovZVX!oocn9~xSJ5?cPcp>DowSXZ8US@$ou@o7ZM-(*R--Wkb$2Ca?l>W z0h4A(DjGQ)@>h>yTkXn0obEGV{w;uHUp5N#L@7w?P*qbJ@77x=b2Y)Z$!Hp@k5%)^ z=a{pT3hxdSsboid*VlFm_?4;!pizWs*8JHEyEpRku1fuCNM1fUerd}H7k58A%ezgRD{Z%iHsBxB5GKgFBFztGCWbkfeGc}$3g5Is zWKt4S&w6pFAIJ%4kB~64FOxXI#u>XR?&9SnfNpevUbr@- zZW*_OLjnp{9>iZXK>9;LQCIQn%C(D^ReZtS2oe(`i|x@O0J)vp*Z!vXWohE8=vdSH z&^7r4#Yl^!Pn!D}kg|Kj%YqF+f3(A_1W5di)|`3id+)MY5kLydbS)P+GenC*p?S*_ zlE5bFKvoaL>87|^u}H`;M>v}hp{h*Ii0oNV?0Xb zH3z~*?6j=EgSK3%$`i2=(iM3rLk9zx_@zh)yAtQy@tT*PXs*0o6h!gM0;${n%TUy@VUU z24g~jc@UZk5vK8Nf`|rCBW9od))VCjL*PByQkMq5YE&;POF;iSNRdVWZ&!6+MHc^# zPU)t+@iyCwVBpQoa{9B%>%@m49HTu@zpIr z`?Kw25`Vs@kcWDNXJBQ8wu(#+I6(!XFgzzvplD{Tg8I?lwW_#rn?Sy9m=F|l z{^`z-nin&+aGC5*(Ak;aat_!?q#k|c4d&1_M?F9Y8$U?;&A-n{yytg>Pc^Nb$-gm& zP9MEN2*(c9QpxL(X$9fw`vAyONfMn>l57Ju#aqHFTik~SrhxzH#$wF!KDGn9`z_nf zX*r&RlkO}^;lQzDug`-2bq_jrPUfhf+^$yTnu_$6{cl}Vgd1W+>EHz2eN_1myADuj z_W^wOqgmO((+G?vNhAh}`tIO%{;;u$dmb3*W7gT;9@&YtG}DF4NWN8rCRc&npy6Yv z(T_6`)S-8;3D7hGIOLL5^l|jiPdLiY>5LQn2_D;ydcu>Jf!}`hj%% zv}^nfHlTXRdcH`0JZE3Z>|p|5v!^P7uIAAI@9sA|Nr{nswv9?J7h+cyCJXL#Cnyr& zJTH=#kWdF4@KbF|np*%NGA;e=vB$s~5=fho@EZ!z70+Ix5ixpUpmV&ok7?VUt&ElL zmBRbncNOlfD?w1Cvj<<7N9G)agkp}B_fg!pjL$6ic^ylFi(7_TH&OPqHeUfYFtEwr zYKP>XOW!KX$_(AU+gZ1y8-g5?b^B+ejes>dhs0 zOtQ|F$v;nDq?k2{{@C2|+kW9m;*7(RRqyW;`a_|X{^BiQ!?pFPCHwQRbGo)ZpD|!# zt$ApwG^>?2Vq%aPj8?MD3Pw+!nxK;LRO^mXcW3t<+%0E-QYK2rOyat5R5oj)7yebG zG+=(1L^R*?bP$5BgRnPpS}{pk9W$k0qGP^qGGh&#QlIP9O7&743{L}OcU;zO;Z&YY zcjwG>!KAZ0Y}L*dgp&xN#w?oy?h(tcZ)Q1IQ&F{5FNoqyV0uLYxB)l0nWF#Pw0NPP zW)^r>ki{fUCozmPsrNC``;4l?NYX>K%fyqH*zOm? zAA#;gI>g1+cC1Jg7YZmy>L#_2T3P>OgzmL$d!Ivrwif0wMRXJWV?%C z3xh+3#YfD<%74v+{I7YS$5}mb)yG|h*wN^G-1)-HEMbbf>w#U`KZD8Ul3K73(6YkX z0#lxb?=B`D3JuWlnD_?#yi(eNxPuKKtHeMT z*ED{8>yC+-7}RU%N67s4O_SR-Lo^z?U_31XW|D(0IBR1*d#8M6v4KJ)g=Y|GrjbBW z1mcd*Lv(IFLT?EqbH{2{t8SqVu?Xgxl9o=xxSpsjx z*Eeo#87bB@@XKnxa9rH_H#%x#KM!w$ekYW4L+Sj3LzHR#^czM#(h0|&1U_NU1G8Nq(vnN!1 z%xP~^Q%taol8$^Cl+*UfTri{cnc-wfLAt0l#%S~oVepwX_Vwa&9LZiKBzfy?Va82; zh3T6c(yA*O(Us9x4ZD`g2G;{CQwQy4mN2+!I~y8oU?px=AWtNQ(%8Ec(7R+tCB{>- z@ZU>&DW#lLe(&LU$|NWCGv}H#^*y)uYOmL$QRCHO<8fPRES@rqUoKcr$)=gCE*M&$8ugkb8)2yN zUURwf^U?9kPvcjy>ax`Dcjxe?d&UPeivdATzka%fZK)n5lm?e20)C zb_Rv^Wo>&=(2M3dMTfdfdtt;WfxK^+=*e8X=o+89rjxz)aWrLgA?Te&BbMMqG7USX zB6V#$dh@2hY?kV&&zL;Qr@fYfwJ_<0}sB_I4! zZ0~Zc{CDp45AjP`x}@14{6w?(kP%BQrtG-$^jVv28&<^d!-~@Cw%)(d_~}L~`mOL{ zY74q+c`5brjd{B}W0Em?hQ5+DFQ;95glKmwgCUubDu^C2Em1sO^C+_11+XQbTZk>0 z7Z%)aylY%jL9~|;->yAxXR|&+Wbz6)*Ut1LprV~AcAO^i#i~`mJ_r# zRwKWjg#VTXi(9ZhVZ8Q~+Q$uxP90bGTr}%lpHin1y_ZkR&(BjA2&+>BYJvP(Zajr# zv__(iv{1cBsopDS()w5RHDWzs^@ABTRGo??th&dq4h2y&Lj(`~(4QtlJm39{QAHp5I@H?C3~Rt(d&eC@|oZq>B!wgEQ4qPuyn z+$8%3A*ZDG>elBi*KNkI^2-vVan#Z#cex&1O~-_jO_pS&yG=Z4fg=L!;W}aug^%vG zJF=aRWoZhy-?|u$HvJ~L{krKsvF#@Ke(k}6QLp(n@3l6nY40q1?`*eszkAte_UbTx zb!+@e1?Or%!E1Gpy4t(+f!k|}wALQvIT7JKb(KKHs(Z~<;b%?b-DbgV;6E0a-miUt zT{jO~f}1)Mv|1}qRijSPt$kAWngUotO&O&aPuWp6Y*02VppYC8_Q(=pA6?(7hA9z$CQi(9eNW12j%HtCizWL!;q zXA!5VJKadW;Pkv`lN0>+;zEv4DIwsPO7msrhCep-9h&=OE*&GiH`8bZmLKMzJ=?oQ zesz&3zgV;0F76F0Gi$rnnZ0(kchr|$itjc(CPMWN>d3Lw09W+9MT5r~zNw+uRscfRH@o#DAlEuTvz#4(9x zWXmSIJuTlh9(C+8?P&ETE1LKDy>Zfe#{zp_vG!WA_S&)fU^zXtJtnQcW71|vH8NT8 z%mwV#0oK*RHYLg>x+SBCcY6QB09{!8eCvF9GFnmTHJ|!hZ&X}kB)x28-fP|K-eh;% zD;_0$4tw>Gz3){doE7=GobZ0731QHmE(HANFB z0phWm zc9Mwb9SQPUMq3SGZZc!7_)G&+*PVcxU~i6Ua*R|Huj^WK`XGxo#S~#5&QhtyBV*0`14uu^<946@zQOx#dp_YUgx(=mZ*gsn~tnNZQ5kR zOP7?dm@#;L<}0|EMdDrL3A(ttXQLf!Zgl6*j!qx8p-dNoiz^{~J!?Y|z_py6iAjJ@ zZrW6c8AzDps!JC|cS+?jRjs5|R2+X%Vw-7b+H`mj*Z&DilJ+ATJH$j3ExOuTHcDor z;WTB%$S#W3ux8_iadB=WQN^;5V=B5$*9A9iDtO_0wX46y{*@D3Q|XyktctlU!8X!w z3>fgNzII*bi0zjhZ4QfjE6zxSSsrGD-@iw>Dx)QL9+X2=T0R+LXEa3|3#(uBzdv3X zg6=hIvb$q+x~4OsK@G#s(k=D1!;hTZdeXWHXKUaZ(oqONqSK^wlXxP%cTkYIHkPFh6Ue^>nT$a=fhRZn-Kcx9`JxKgsME&dgjn3evOBznV#@#tsV46k_bVU`08qMT0kd)*3(Z(NmH9@HwY?WG$4h(&pxG%{CotS({E|$9C7uby9x#@x{Q1G!dgN>g{wB%;DwESd2QTZNN#aznlavc!5d0S-qeZ=ugQ-3QT+VWu)n;=0v>--wxi4;2w&9Z z>%QJ*wAQ;s z?eZpbNA2~jV=5tE1$=OuHW8yOn8fNTb4^`q;d`W8-1A|#fBV+6ywnC`88>!Cz9n4I zH)Mn%K4Ix(m6>10e=Pwyoh6XHUJ+}Mo-dCCso9>hRip8x9Oz^Mvp6gS^3mp1#H%8&hPkUjLAvRY%PK;;$*H`=hc(mzJyuscbszn;v za-p*w$r%F)?~tD`_d-k&c?r5LuZja*qKdeHT(qP1e+@woH13xj4qs^&@gwkb!yN!@ z;h4(&X_yz}B|IJ*@T;+aBilY~VCYymk=}2OoG(m5>oLm=5H1y}4eUsw%mY zXZ%`~S-2p~F!JZ*WyGeC7tdeD<1f$WyXiQ4#!_ar*^9>iep{)>ddBdkSIMS_;`PM9 z9RB$$ufBuHgjITn1a{Qx{@WY+6us7}xa%t9RcZv~imf#N>uG&U)&}-)vMhx<(s}kT zq(+7#XXH$Pc<;&_h2;G$T%S}zF~S)kgTK4skYViQ@S#;_|NHVP%B10WIwNmCy)>6M z9_@3&HuW3!p3I6^1@h|qfNay@^7v%R7_!Y*zBKGc!oa&WJmO3n2K3{gN8TIbLa7>+ zKQqQX?gdK}VeB2HmjGW|Xfh_|f391+$0GwJge-+_!%u5@T3}qVkZ?|3h5XeZTfQ;# z3V43ha+kwkZ;KT2&Z2Wa7yUBWv1Qe(_+)opxyno(E1zG z{1S$ac15Kq)oXGg^(6x`8xt@aZnA+C?Z3WMwo*G%CA9mhYjC#yR>BQ(gJ7u^hksH2j!1 zk5`X%>u!u%Yr{1iW0yf33i9Gk=Yq#)*!b}lWX0Ur$QkKQ$YcFBv;Tj;A$-GatL*r- zAD>#(syBO9{jWjK{r?-ZtFZXG;eXD`dC?*6@iG%EgbN8jPMPt(pSwdsgLYY^DEk@) z*8j~9$0X(QYudFGy+UUAbznDe^7-J9N8KCuYXw_^!Pfj*kcH!OAMGaB{aM5GTTZ z=3iFLwv*MiY#||mxKBR271`a*0l!(ruL-`b?Qs=3N|JqkdYHc7Ca|%NW*G6_MLz#x zG-Z0>OiiAHjRkcJ$iq51EybCHLvm4z?+kz-qBN8_&@_S^c?`xNT^wP9lZ zZMu2A(KFJdGTp2n=8t4Qkk{|yyfKH_Sg)DG|1uMF+J`EC&g9>F?6<{EpNe(vby5aHGFBgaK?CuBLQ;#yy)flbzoBFOv$wp=a})g0^NQ39a?mMo>12(o+-48$i z4`U>6E3OhB&d=ZL-=j&>u0wH5Gte(4IJ0i}rhoG+q^EZ+TjUyfAG<~PwGH)uT_Q(q z9v1Cga)$x7{cm3wcSmGMQklj{M=^0wtd%DAv4wj?R52l`y}&{mmr|L9E@15*l# zWb;JApqQ$*-Eg#|2G$|;$^V|5O#%5{851GrzFx65O+UW%P0Qq{SX&I*DTuOq?8kz; z!4@^@Z8X;Y7f(svRCU%mJE8ITfMKP@0;pN;v!Q+tmULQA+V}o z2f=>E;PI$bvz+|P4X<1{!0M38)U?p}!~gz$f`S7*(3!H( zIm&%-V^TYiLu$n)Yx$7jf7!OW|AcI$wDVYAjd+D%2U!Cf3l_)y<8bT3^`m|`dz-M| zz0V=+%`16so;EX!CWZ?ul2wPTX+CCYl#-C;_;CzuL^E~!Y;ONJbpPQwz9hb&@z=>F zG@FEo$XA_kvMu=SqB6ji5I1};Vsr~}Yb+Pl8a!d_;QG*L=ix^RI zsiGG_GBEFde2In14}jN{_3-|24bb?ac{9%+^=#G`MQ9400X2xv(?ouZLbvaDzz3$Xj*$EXl$U zQmDz8#!~KFi%WS!9BsPp;5XzPXWqlc>SI$4N&d&-T-J>Bb*OQBy7p4Kj|B$4)=XMk z^fl_L7yZlnhJ7tQelnpM!lsKB#m`}b&NWzcW24>GZ$tVyFvDqvLtb-P=B7J)O$yn% zs`p_MQ5<5S*T2U?Z*73(CB=# zYaQjF+YH1sMH&D2^1PJF6a!z?)F_I;TMWi0b#?`p-qt%PC!dDwxz#HI%=%{{DS0qh zeI-9HkP><>61j$ixOp}ceBvFj&N?T-rQKJ$`(lKS$>;Y zx6C$k34_CcOuhm&jgnGKz;x{MW>yvl0@H7ftj{aEwt#wU*&ZuRwX2w1~ z{!hfGdKK!okZL;5)nXLy7kN%E(2!*!-N(JGwDEXfH@cCL`I3bd^2#C{Cyo)n+okMT zWsW-bXv=!>PlA$k=%$K|=iiSwP|hr!1xn7w^Ox>8?H*3HoG>zgNlowVRV>|s&b4R^ znRA*)VpUnVas9{}T!u(gz2vx0Y`;!rtVoHJu7{5mHb6~4qg2lM*CAfn;`Qa$kFQqd zTNL$wUI|XrdA_vySlVKB> zzF97?EH)^{wM3yxoJHB9s-gra%-M}KvNfG#S?9n(Z}pEpA*I`fMAK2M8&tT9*`VN=lAr1dLY!Y0UQ;hfsh zR^#QpxXmrRmX8m%m8j=CenU^N8Fxl_2)G$$U`7uI;yp{~Ni-dbAmdzF19da^^rQ$|5{StjkYXk>w- zuz0=Vvm9gB=o=s3nl7yD>v|I??R5wr?bc01YsU`Wq3^N{GF|m74tUdf*$ACh5}?uJ zo8uCc*7l4P?`>>t7BsMynkgw>T2Cn$E*U}-CzouTroreN|FM}K2(0C|lnOAjfye4p z6Fn)t5f29PY)v&~Q~lP>F8R6woI& znhr+KVDjRqI@A`T{$agSyfh;h+9U#dwq_wVv=P`~6R?$W5p_P%aQM&(ExJ*2N;uuw zdvOW%9)Xonn`^Oc79Yz5d2OA)T2jbHWd#K>5v@_~qbN*I7erpZzh7HPyB1;VCdmd3 ztKrFA!|pcIaIR+|-szoK-re?jP1ifQ`Ui*mtBgpT3vACChOOgS?=*}`WOhV|w(;R# zkM`Y?+mRGEx*Rv@O2r~Mh~&Nh@Gcc`&DU+{vq`Rh=3p>z*+DKxPk$Ig)D41UBYQ)D zzU+>zxkfc&FM{kXzMYC6yn-qI8f6(y&LK;_3ACP&kK^Z%yADX|}|EXUW90&C33m&#nKG%7BM-Y)9KzK2}J5j2;|SBU@S+ zxMwV;wDnCiTZU^}x_w1&THwXDUAKADnu$U3Xvw}Gf4d(4m94sEeP{gbD6thx%+*_8 zZ9A)Nij?NMcdNbB#r*R^1eN+$t&I0+1*EG zc0t-{>jeSpv{)}7UK*84ph{bHs9NQsBoI_oG~uF#fFTLAV+UFha8QFH5G{g`5F$bn z1BBE~5fMlfO@c{CDv+dHl4vmbh#_#+7r+|ooPEweXU}=gA3XZNm-VgnuJ`(TFKH;L zMm;JcmpG@*1G^x(Xf&kz?DHQF9(dg;aHMGI>F_`{eJH=nOc>zQ&(B3JNO<4hoDn6DuWO5_LXK^GGHA<#L|H@1FI8$r=d~ zb)p%K7It8?W7}x&0dp#T-Qk&rASGGp^ISRXgJUdIT?Oy-cO;i}H7g7qvZrlRD@g~a z+Lzl*6A2)2skns&S?lzI*X3p!)~j~umG4hds_^n8lOnser?5xg{f8%^!#7Y3CFGhd z>?GXfJBn-M32tfOZ7E7zUl8dkrDg-4Onb4(*HRp7#kl3zj+c0CZy0_P>F*ln z9H^9Zt#BQWaVw4q8}2qU;?Mz|o2c0z`MNAm^7xxOy0HXTd|JYG+90R!%p}?>;C)!B zT%Kk$qSsa2P-Wh<8c@;nhQ%YZjSsX4r-?p(A6slVNetFH|BuL!>v$E*2Xmf_&<3h0 zm{H|Js%}7<#kTG)IV~y1bu)%!Lf$gza$zz$-`U7{ORnW71A;g9Icy9jxdyK+T8?3n7Pk zFOs0G7~~_Bn<4nWlw^En8qJ{5<{0*1&MWOSV8cM#R=-az&Ly1T&vl-YWwdK-NLt~?_vua=whg}bt3m*CIgZG;FQZK!JYL~Lb{CiXU&_oTu_hi=V~GaAVPaB zsPK&)Ki~&aNkM0(GBdLvlRl6EU6F13xOY2iDjzf(xZ%c*OR}B71G@#Lsif6xmhsHPWh-I)#NW7 zWn*a|ry^4lA-*&d(Y$hk`m=}u@-)ZrGd}rzqGjArc=~SzHDTnrPj-L|;kEm3C1~eL zZ((;NwVUx5c`ZCp?Lx0c;je>V)vHk>QIX6a@){=HKoyR((nG_#o&2H_*v2ZODt6NK za8fMz^Efx`w>;{>X1~1+JDOLdrGexmz=MAJ((@EUG9a1v-GDUr;1artSB+X95y|x1 z6UAP3W;0!)z}2RK|DtY9;(iA6YUM%qExbbDT`1Lp-5*FzYtj8xwjKBAh_KdLuCqqj zT#b6q!z8f%<_YXmt49r)X7i}ZC)>%3pclvc1mQ8wkcT;71DS>F|g7<8lb1e zNOPv^^9eEO7$_ebd9vG(>`{hP$W`CLbRn0bCcyUyoaRjxC&Edo4OYNokb_nc{+?*%%oYY;|Fq3b)nv)hZ zfe>LbUhXXgg&|wv!VqF>{PLjC=a>720DHc6)=z-*I2;qnyu6YjajzmRfe8!1k75~R zv4^_Jg9*QJt`ngK9PtNtylJ%fV@QB|rmB&^S-+{7mTC(t2%OmU{!1l$2C{v|XBp8*W66C_U}ZJ}iao5?mVUlHHp6VRII$)S3!05lPv3zLxp!Fc)7^rl z=V}8x-vhp_36yGo1zwT&nD43`shx!D!vH@$?4Tn^^P!y`&o0ZrT^E3#hd^q=)RR;z zxwn}#nJg$hG$V;MeWA38=6Im8#~I3W@J1H@r9fbUcVRD88o&R|k1xV=NaJb-$+ij_ z&&hl?lEVsm>v_~zUrs)MBIWppuzWEHN&Cw@{_Tg!7-qZrKq-$UN6p*-yTwmzNPcK1 z4D~{G5R0%x6$bOTvt}q7-ZC_{aVa>6c%o!p5SZiOz}<7^%(X8cVaurY__xae-(AQi zYMPU9;B$86K#eX0s294vZ31w%7u&jUwaaGY!8fdaF<+`3HtU|Nb{>nHIs2T2pb};p zHVgSM4i=MP4i)eNpw?DwJK-2W;8Qm_4R$%U0=BWOuz8->7^O-0Yswvrl(w2 zPgil-)$$xID-0q+mkc>42ee-EX>UnVbEkbY1|F^X>3AkK7gHsh7`o8 z#^C2g56eeo^bB9ZOg7fO?^}`cPcOwqgm~#5Y`^3d_~f9_Oh**DWgn-WxmJRB%b$P6 z?I>O13Cr$vvX8Vh=Qc;o;~yGQ#&#>9JVc@Xjt^bOJl3UMH4xV!KbE;i-=8cc`3n6cc;!)3kyee$5v&La&Li^V{BVF2l{^qYZ>^Dbp{NxNt@hSu4#?PiwH>fdL zS+EEg`TQf7a9t1fam?c^-X|iD{`q3Fm3jM`YT`|4?3{9)cw?1m#Fo8@9PESr|0Wv81PTeAR#yxr5;H8FG z!v6V0^ux!t3z?o3`fss132FaObCE2&%JxU1tr(@N9k97URTLf17FFll4T>hGY7^%C zbQNHfdFpS^2VOc^v+%29KE%W+Q4f!JYfGrvPZBA=ZT@Cwkb#M{y$e(ko-wzYP6&(8 zC>NaY;VAc7Oj`X7vn&}Y#CDbX_z5|i3YlhAsOZi<<&p0bnY}l5gW}|-+*1Z}LZSHv zf614%xz8b;pP`nIgjd7m2mCBx5Oz1uL*{K1OezvVQm4vzV!*m0x?v(NRH)*u#EZTd z!71}^zIa)GxBnxp9bvm@qQxUc9MS)WUwQ0kYCOwJF#?lX5 z!}gX&Sl6We^y?qtTJTmAL)cOi%l)I+69tkB<@SkhcavhqYol` z^Fz($A6OsgrQMYK)?4OF*B8&&y(u2@U}Uw>2@%9?hud+$k^!Hgg6TF=CGn~9(Eo|M z@Ih3-skHBan-meAQ9&wvKD&+Wi6-R=+2)`k z{~82zKpEM%3&~jk+Y*2fgtwY%3r=jg$P=_$6m4yJ1le7fC@%N9I@wc z`?+@NA1=a_k7O>A1q;s z!LHx15A@t04&E+j53r|CK{dJm`Hb=Eg97}sd(3yW{%7#+Og{CwEYfg?KF<52xS>{3 z8iD~2i;VGy^`;K#s_@~}7kghOZze>e%_{_%zw-Fl9U{s1l(T)&U!wCiV&n}eHae%Y z4n8O#5h{JBG3aMYrG)8Y*i|WEA4Zyw4HKwIGlgMO3KU#fxA&qiW$W(2Z7kr<02rVQ z+44|%dfP5GAjV!|CAOUsz#UP16U~t#!9!+m8idzgXST&BbbY4krt0G{OXviAhZbC| zhRWT`90b1llg0!+(#>>x7tFAH!;R&cNqtBR{G{(5!e~=Vg?F4$DREXk& z3UR`&g5lb7aDGYuZIJTmO+QN{iHk~s6!YaqRXrO@LjzrfWs#Z)gPy=SMWfS;!2-vK zOUy4PIphwJ7H7m?Q=^{O}T7A32+e1bT(n(NqRXgH}LVsA-`v^ zo0p*brH?Au9YZO}3K7#z@^(xdGN_YN&q#{+(Nn5lUpj=4#Q z-SNJ*3Zy_7D6M$~V1Q6GK7X6j3;_K)DL&jeO$zS8ZQ7H7aQPgCAr!33Ysv)qf+9N^ zuEyu%z<$%~55>aoRw^ZekbM73S0)?h(+P>-Lv}G%N;9hoNq^)(HZtsqOBz1?Ie^O- zvQz#(;}cJdFFNa(an7RxDXiv!jsyIcas@DkXChBk2wp?)!(Yt)3mTXG6Rb!Ubs`0+ z!^dL{I^@v)r22vA)jUlhIFkLSpkO_ORDv7)j~TpX&VEo_8`;Kje)RL2zv5oV|s z18k0G4yV0OV@ZlO--HRwpNr2YkA&)3o^4_YiIg9BX>ps(Kh0y5NSAa1J^Pi|`Z6DQ zit}`Yn(|dMK-aVym#_P(?$D_fz@xCsndsXUCRjB;q>@sPF@4@TU|H{v@^=P@GJ9uw zYW0~QWxB=*rwQ3<{Kz!nWP-Al%-Sdn*F8S zAI!GeK(<;wMbAAkEm{rc{g*YcSNUsYOI+a@n-IcRN_I}Mv$nSFo#+e$c1J#S1ef2B z9p>|KlXkSlnwm z4-WC{QGHK+GN3c;nn=tI5XU(bTrv{fXs|@rEc#ocMD@36Ne2E)2cJ^`&;Z>nbJ~d@ z6f!Hwu2)!-`-Z#Mf=@AhY~I}T=(3|Myid$hM>F5ky|j=Mc&YxC=9LT~EK z0akm&2gUM*9X&-lZn{o{(W0i>eC&o0j&sDdf&2dq41I)p>E%~}c`ccYbo#s5b4&Vt zaF@uA^m&o3lm{py?^2jDgIxh4=#eO;fu{}3%#valxCtL%mN=L;1Yms}OA0G!AG#1X z5jEbJuIq+*iVtoCCyZYj?*Au^8{9JJ`c*@Lh%GGiCGEAuFSWoN+J8F-GF)$9R79A|)? zDCXtIF(r{~i9RHWh38+dMt$_b??~2O@NHq>n!40|%fju7EkgWGZ^34e@%mCMLk4X8 zI5p=F*ARfcaGw%Z7Z$hqKoM41D2>*{3f1?*&{I^E8*+zL}y$vK@ zXF>sE%{zRtoOUM^)->j^;?J45%r7|^JIf+j!)z(96rC}tgszpQI7IY-(|>u_&gplq zykf8_`excY*3xWTpK5o|*0LUuPCEG`S&8QM(Cm97=*f}L7w-qt8VWV@w(sC4n@Ytb zAHKxScWXO)C&w-5bVXQ6W5)ARBBd!=St#kY4N;=`T&_8t3Dmga){ty3)DH88T?$s| ze*pihbqxb~11`U>QO8t8#3bu*d@UqkN1y>NRL z^@w-i##A&VO~Nir_@VqQ6i$Wj`Ve-9>d4jj`~#w;xAC-co@B!3SBFiJS=D^K7FJU_ zlix8WQbYD-)|yWNo_kW7d4BapRRDm?&M%u~ClVJK@16c@DCWwPslubyd%w@(Y2Fcr zi<==g|AsGt5}e=4j={$!EXuo2E5maXnRZGMOGxgP=g)`!$ac=g9d=+akatP- z%|s_T4@M4ON8$`2(A5o&rXFD3kddoy1~cc?{>Kb`${g!Mt{NNiyJcAFD}VLsCI0UB zKAGs6fgB{j=*CsZ+YB-Lbj zM3Rk%IqAZos#dul*tC%$`E^j-Ag1i2EL$CATohxp22v37gUqS-pJM7_dG`c2YN5o0mihZnbjF3L4pEt5^m{5HDU}TlrDU!5CB8 ze$diE)V*<8;+PlEU^%j

Hzalc-%fgLM#kB*jkLcIt(mbwGo6#u>yaVC*#xY%kC z>a;vrf3D8`DW<_}>n)X^VzITi;(?~v#fnrEii?zLk-Qs9oXk24!d0S;Cqi4FG)XMy z!X3=A<(e#R%**vzvAn`OEIXYO+5lZ+AkD!H5C+r`tj)}idY#bzMjM3*>P1R1Ox*a6 z&P>A=(7SC}PfAi5Y=U>YPdl#o6kD=5<5)IU=pq<+dIc|koZ&$^UMuczZcJrPq32Y? zw-3V>Vgg>;D7n+ilBuK&398V{C*)7&p7UJec&U3k_Uj*2Y1fE7K}=GbRR@ z66p$H3E5A3?7y<=Wo)`CzpHl=4)n2`xTrK&wie+&sJtC%za|NoqYx=ra>cqavRm(< zAg9V|HS+}Z!+!%Ja)H(Ia4r?DwAConq%|Okkf4VX1)hhYmy^Sgxhd^Sg$iIDB@jjPSI3(zmkTCZ{ZH74<<>wejrkSQ7#lRy?~N4^aIDP5wADbCrHts}a_pM}Vo zu`BZu1D&3n!mRcHV8cUodUTFwu63=ODu9KH5Ck6-t4cz(pXMcogDeO#UV3|H!7@jj zAeSAo?wVUo2Ts!y_scRf(_`W?PV|(9(Jo7l$I?ch?*(xSz&PCh!k8=ABIv0hVJZPWZnwS z!!vPJ5)-|l;(!6t0lx)Cwib0rjS7A^g22KIPw00y3xIFc8nmmIR;%h?%Wf4hr1cP9 z(%ih2FFMi4H*b>En@c-ci(7~L(=4c;1^sD-HLb;{ewzduGvQlJE%K*g#oWuD+)gH^}U%7myt}q|g4>RbxRuP>YQM)T@ z+&eZKZ@qm;r!bx{^=NqX(S_y=6$UuZr9QkMizoWz&ivz<(DEf)*%frzB;1|3R}FcJ zVyUqJHz*j61W~63Xx@{S(m$Q}3eWn&^zv&a6WeO#ND1w>2SubEGRUoqqEl4pO%f$7 zZ2QKU>eT7$re+r!KYJj%Q;fZNw0%w31#WHXnku)?Pz}Dj5x=sJ1nedxFhjLSP>fc^ zHV671!!A$IS(;J-pdByP)}t1v@d40!@^vc-XR(1q@e`S7OY>Y}<`z=}Qw>FtY{rRf zwlty3wvRt410!A!=@BKjQi4%obMBpDqW8&N`gSpJkv?&XYxD)aqLWM~NHC)p0TFo?Xa~V~wtFsJE4BL45RU zJrLGLP;HW8^)PWL3`8Qy)>Xv`pi7{mgSA?rZnS6^+?>qZu%He=dcFJ9-8eex zM1r`eC&?5wcw$6bqdjU6m0b^UFgj6-bG|K3z@9pq_@w-4Mc~!?BMY%~gj}et)LJgP z6&0;t4*CeXi1+1}Mw?MV2|Z=@eGGLYx}cwS>kU3?5s_WtgC314T50I0M9IsTw88P0 zl5WyR$-~{mE~ujv>MKv&OD7a!BMg3~MS~|?cP5e^_ai^}U2*|pd|GN7Bng3Yx} z9PR$daF>-4!?J@*P$U}dxZXWi9d~)OC_0FP%?*kMa@eb|9v`Hfcx)wwhU$mO&7i)o z!6$+a@ER*msQpUXaz!nB?RLZNLkEJ-Mk&sg3BK6=g5(2*DGN zSMG%?K-O(yb4C>B_IMV{`p3gtqVV|v=yk^lOx)!Az?=ZW9LaE4thlWY0?xSqst_={y_)J`2%UQ~dWPN*cE8vS4NqQ6N zVxWvA4+95eg&_MJrJD;l<|v%K{hgNH5DU3Xc2;~31uiQo2T^x-q4B;!;-#uF%FOi zOo2T20*nHfnigRX3nX`qYr@$TTZvyY+&*s*p94*-m2ercPh0bmt6dKy9B_>W@KZm4 z0WmDHK@%TvA4&rfNh?7@IDL?*nxHpCU+}R}&_OKR#4><8f10KObSqxXONo(CMcM*V zKqdx~ZGD5Tx&ST{8*w^_7)y2jvky4M=S*bwd5-gHjWi1z1HgxeDX?Y=t$AKRsv-bh z+d*7j3*=DX2P$S8JiB^tly*@>e$r293?39wDH#A8&DVHt1@Y}8Kaw&zv}UhfM%%l6 zqa&8SftsCWe{;w;ASXlxQv0LiA5IHKc>x=r5xPdl!vT{a(I+##qvXJWHhJnQ2+GC53(G{_$lkM8L8#fgrA>v#w*6DaN!VJU>3==8CWMf@cn_u9weyn_GO zwSm{enS&7ww?7vJtP#U<49tS3dMUlUt$Dyi{FRO>8?_q>OM*9V0eljUQWbiIl<(`u zLN|)FH5Ap5A*p!-U^KGxb6L}}4gn2#PA`t?5y>S1pA6hVsO{(G!Hf$HJ3nc*l? z;aZ}%>xu~QZG2deA(px;aV3i*;oB?<@J_9%ZlGEy8fWZa3;g!O+MpYuK_ID9u@$K| zc&VTMCw50lmkm5kN*P=@YA95oErzxNlJ7>SC^1q0oWmI}NoY+qp2+f%124vNsd80p z;l2eC)(wP=k9#SzWXmfg3Vq)Y=8~XZ`Xg{NP}-~?jaR#UM51y{v49+Cfr>y*cQB&4 z<{D}vX8@nF3xWzXO06Zj#EQOYPlhqcXQQl*bi8&$tkw&9q`+~&rS!;7#@64}4aB*i zmHp8c&)9=3fm6Y}f4m;P9ZnoUy@e;fb8Lt*E!7W&qH=&{OWn7ShrrP>hYPdRMncA4 zAxL4gM&RzkkI|pr!}el!l;k6%nL~(BeIp%Vy#>(C_t>0qW&&H@-nO_8DhyKL&LnC` zzZ4+NA>Cl^#OsOr+=!OV;sz#o!E%Ghvt@Hw2sVP);~fqPU6>w!4M>|Xo?ua2y96{Y zM+1sA{nAPdx`|SGfoKd7w7`O2L?@6WXX1pxZ(Bem*Yi5^S)Hns$G%G$c~T(y64%jO zZ%n0&V)x})rjNV>Peb!FnB@9C&ITY_Qq zJ)j(9q3Zs(`wb|*Xc#V;;zY)D_(7PA-g4540HY1by)8fkwgYv<Cp&zyY#?gYme88ncluBkYX`oE`19-6qPBoi%r z%yt&PU6ayYTt zZ5wFu{r6(JEEUwVyDm>$boLDW4?M3nuE_-OTFKGjce?%1qQfj1-pyKXB4a>=P**V& z^meFlhw^SQsVZH?l*Wmy);(}$kvCq%q@AzA`Oz_TX;HJlCCQM8aDKmyc9ZEDN&AdO>^GpvZ@3-R<${R1?$7T3^xR3N}jCe~E{<{*s=;u^4JBiAf(0 zV_tbwDn%IL7mC!y6*X!_f1(dj6^(08HS%20=D2E^9`w=;-|~SN*U!&#X^Gq7-P5bG ziVh}@H@ThtK^1X2{6NQtJJ?IgPGlN!LS0Ac=^bI(PbQG;UHvk+^uI9|5n+82*NBvj zzKky8C-Qcl*u|zMF&dJ$jE`@FAfB-qVEAV!HF;hc8$h=}Mxav^DL7uYp(bhs2l8Xr z&CzOLhlc#WdyX0~g-H+8ADTqz2+=6qV5*Vrmgpza3U{$5sA>wchId^&+tmLO8u0AB zNfLGqHt&><`iCDmKGwBEY~S4pxSYVN?6x_3lx^i92S^(TNW9#<0(ZIrXl~?E=@{EK|nJT97c~5$DwpkV_P{|~uwFA}@JDCX95*+i1@bPo46_;eG z>!C|jw*X!`H6qTz7KXW4y*DQp=?uqxOVK5(0cIe zWm$3b&FrzLalKp1`u>d1FXHqaJ;nGiev$~-1D_ncq?83$S91;DLlAp$zQEtrV} zoWUarzFE(qnzj^6a&j>X+v}4-nGL9f=B;}O#%COC?P-As5s%-~Z8AmzUYYyQ`O!6jMBQ=?2@ z!Q_NftY<4Iv4esA(ytt@ZwWn3NimrIsQVDcTyOc|{*#%F*Sg0UMz6Xq(AIm%JX=LB z$3d20miM^?Ooyo=R<4^2O2)m<>cFv{6vvGaJ@aHOxPwJShheLrmvKQ&SOb;7teO}fbd%*x?S(EK)V?=OCGV6Tiy<7Y#> z1NTyU)=i|bD|#`A?}<6ab4S>__@Wl%W6!OiRkOg=I+ z=k5VrnYy*ti$rmo(pKY%v~-#ZnFmk&ctzM#@Ms0NoP0M2v<-iH&Od(5Ml7;*^qf3y z8zLD$6ir)|9M`_zP;TCI1hC4hZTF6OAf(9VP*+- za5M-CtHN5CTN6Zg6eNFFo-%|^Bx!|D%Z&*6E#?OM9GXT4fWq<=3#ykJrQbdd9Pncs zm;n2P(mhY|v%}G~I#5n(+Ibg;X1LVwJWsa^wp*Ip0TYCsa znPUn>_I3V&`=DFy;MgrN3kf|>v-22ah%~wHNo-AJAaGby&zm+~?ULxx*%eY>wy?6A z^MPTbsp!NQVlrbei0MPiq25stfl=^!5&L zbbJrr>6i;Vyi(_o1OhFN<<#N$S>cd-XBX5eBOR=k zt_5;9_^~5t9uzI@8ZUZ4no~#Ux}&J{SdF~@b<$(pHiWCl94H{l;U4IMc{3v!rlYr` zUHg+fsUwIUKSZ${fBZ$M9JeNI_*udg`yDnq=CMJq^O}vWn7h9mVkhk&#(p^$pY5!1 zgU2Ec&2ov44uWMbjQBlXq`o8Eza|aL6}2yD9|&!~Pq;oyl0|jaXxM8%jbh68WaR%B z&t2=_&plGdS8A2(F5zG?s0w=}XK)n^`x>}&sarv3OUeIYW9|FFz{A0Z1(fvbW;ehu z8TPB_{bJTq?9;rpYe0hPA9oZDm=HRtRMnLKMgrd3ueYUuIWhl~6J&Q3Ur((=TG$Ed z5<~671M3}aC;J*;k-I_lpt|h8W=fw$fGG=}%dowmUt9tvN-PGec0hoefUvgA!T?cV zpbPWcCxK_de4a|}Iczf(nNG=p2eX(?KzB@SB<5tVmeckQ=otT<8mM;h z@p#agPJV<%H)S3HYeVO-a5Kd!GaFS01_uHy=%{g`K&SnsD^keqCwIoePLCnv^`h*n zT<0h)Wth64+GH7pqtoVllUSqp5$H!%-$;t^b8))v>3Ji(&E;J1n}Jkp3MsUgHaF! zg^X9DNILVvJ-z;iVqzLW1o{T;3{PcPv+;h&`K1{f(r&I-u1fw0b0s^2g}8)vsmh}| zGxTD>H{uf_Kdsork|Z8u#eqC|`l~6K_MAH|gt#0(_)dc7j~=a}I63huV!}hf$ntMv z6R(6q#}X~k^~Mv5ACcMNjNy0tZjaXPiWx-;fk*U)>rfwfj0m|&TpZf^>~JH0O5^kb zLx5w&jYvI1cyIoc30%dMm&?Q}!rm(3x^?CnKRgQN6X96Bh^+Ab^ljP(!?{!TNkZpM-+i-ip zk_zx$1;87a069qsRM0Jx0T?!*1ACrjW{_c}J3WUpLr zpEy3a|9^8OyQZ7|o{(2jt82vcu)jMFt`@lx%t5i!%%OTm9ddDc`!^jAOz)f?bLjxZ zSiS}&PO$WOyqXzmPYV3gts4ZBcZUC=*gW1iYo4b)6KK2!D4zIFHUOp`51Y2>_eM<3 zp#9R3DA7^Q!}c)nW% zA>t}L_kHlLNI)nv-9%%Ga^8vHTc-8@sU%Z zPsmioSDOdiDP`Y_{hKH3tYqi<*&~LhKXwtGovNN1GyQ5>tsR^A*J8eZCV~HFa&yZ* ze%o;x?G$+roLQ=PvzV;0PnT^wA)rsQ{VYXeAHbX6KMz!LPLc7|_+&d7la;dvBfB`@ z59IUqrulv@0v;X#c=f6SuQqSj&c(afry~0wcQBmE0MX7pp!gLOt*w;8ReG~T;Qwb} p<6qQ@PDiZ&P5=0xGLK9;wL_??tAfj&@Fuo@vGenqE&KoWKLJ7 ./requirements.txt\n", + "! pip install -r ./requirements.txt" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nun kannst du die HTTP-GET-Anfrage wie folgt ausführen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "response = requests.get(\"https://www.google.com/search?q=Python\")\n", + "\n", + "response.status_code, response.text" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit einem HTML kannst du vielleicht noch nicht viel anfangen. Stattdessen könnte eine Anfrage auch ein _JSON_ zurückgeben.\n", + "\n", + "Folgende Anfrage gibt ein JSON zurück, welches wir dann auch gleich laden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import requests\n", + "\n", + "response = requests.get(\n", + " \"https://raw.githubusercontent.com/it-ninjas/labs/master/static/files/json/islands.json\")\n", + "\n", + "# Wandle die Antwort in ein Dictionary um:\n", + "islands = response.json()\n", + "\n", + "# Etwas mit der Antwort anfangen:\n", + "print(\"Here are some Islands:\")\n", + "print([island[\"name\"] for island in islands])\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## POST-Request\n", + "Beim GET-Request hast du bereits die Grundlagen von HTTP-Anfragen angeschaut. Du hast gesehen, dass du spezifische Daten in der URL angeben konntest.\n", + "\n", + "In vielen Situationen möchtest es vermeiden, die Daten in der URL mitgeben zu müssen. Hierfür können die Daten von der URL (nach dem \"?\") in den sogenannten _Request-Body_ verschoben werden.\n", + "\n", + "Bei der `requests.post(...)`-Funktion kannst du die Daten direkt beim `data`-Argument mitgegen. Sind deine Daten als Dictionary vorhanden, dann kannst du diese stattdessen als `json`-Argument übergeben. Einer dieser Werte wird dann in den Request-Body gepackt.\n", + "\n", + "Im nachfolgenden Beispiel senden wir einen Request an die JSONPlaceholder-API. Das Ziel ist es, einen neuen \"Post\" zu erstellen. Das mitgelieferte Dictionary repräsentiert einen solchen Post:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "response = requests.post(\"https://jsonplaceholder.typicode.com/posts\",\n", + " json={\n", + " \"userId\": 10,\n", + " \"title\": \"Post from Python\",\n", + " \"body\": \"Did id work?\"})\n", + "\n", + "response.status_code, response.text" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die POST-Anfrage hat wie folgt ausgesehen:\n", + "\n", + "![POST Request](./08_1_post_request.png)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im letzten Beispiel mussten wir die HTTP-POST-Methode verwenden und durften nicht GET verwenden. Dies hatte diese beiden Gründe:\n", + "1. `GET` lässt keinen HTTP-Body zu (bzw. ist nicht der Sinn von GET). `POST` hingegen schon.\n", + "2. Die JSONPlaceholder-API erwartet für diesen Zweck die `POST`-Methode." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Weitere POST-Methoden\n", + "GET- und POST sind die bekanntesten HTTP-Methoden. Du kennst nun den wichtigsten Unterschied von beiden Methoden: wo werden die Daten mitgegeben.\n", + "\n", + "Die Information, ob es sich um einen GET- oder POST-Request handelt, wird der Server sehen können. Als Schlussfolgerung kann der Server einen anderen Code ausführen je nach Methode.\n", + "\n", + "Neben GET und POST gibt es noch viele weitere. Die Methoden werden meistens so gewählt, dass sie mit dem Zweck der Anfrage übereinstimmen:\n", + "\n", + "| Methode | Zweck |\n", + "| --------- | ------------------------------------------------------------------------- |\n", + "| GET | Daten abfragen. |\n", + "| POST | Daten senden, um etwas Neues zu erstellen. |\n", + "| PUT | Daten ersetzen bzw. erstellen wenn noch nicht präsent. |\n", + "| PATCH | Ähnlich wie PUT, aktualisiert aber nur spezifizierte Werte. |\n", + "| DELETE | Löscht bestimmte Daten. |\n", + "| OPTIONS | Abfrage, welche HTTP-Methoden für einen bestimmten Pfad verfügbar sind. |\n", + "\n", + "Eine bessere Übersicht erhältst du hier: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## HTTP-Status-Code\n", + "\n", + "Wenn eine Anfrage erfolgreich war, dann erhältst du meistens den Status-Code `200` (\"OK\") oder `201` (\"Created\"). Kennen tust du bestimmt auch den Status-Code `404` \"Not Found\".\n", + "\n", + "Solche Status Codes geben darüber Auskunft, ob ein Request funktioniert hat bzw. was der Status des Requests ist.\n", + "\n", + "Eine lustige Seite, auf welcher du die einzelnen Status-Codes nachschauen gehen kannst, ist z.B. https://http.cat/. Eine seriösere Seite ist https://developer.mozilla.org/en-US/docs/Web/HTTP/Status.\n", + "\n", + "Zusammengefasst bedeuten diese Status-Codes kategorisch folgendes:\n", + "\n", + "| Code | Type | Beispiel |\n", + "| ----- | --------------------------- | --------------------------------------------------------------- |\n", + "| 2XX | Success (erfolgreich) | Anfrage war erfolgreich, Daten wurden gespeichert. |\n", + "| 3XX | Redirection (Weiterleitung) | User muss sich zuerst einloggen. |\n", + "| 4XX | Client Error (Fehler desjenigen, der anfragt) | Fehlerhafter Request, Path nicht verfügbar. |\n", + "| 5XX | Server Error | Auf dem Server ist ein Fehler aufgetreten. |" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 0b667d4afde1687e6ec998aac3d5f46c2da675d6 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 23 May 2023 11:10:32 +0200 Subject: [PATCH 57/70] theory: intro to flask --- docs/08_web/08_2_hello_world_browser.png | Bin 0 -> 20516 bytes docs/08_web/08_2_web_server.ipynb | 193 +++++++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 docs/08_web/08_2_hello_world_browser.png create mode 100644 docs/08_web/08_2_web_server.ipynb diff --git a/docs/08_web/08_2_hello_world_browser.png b/docs/08_web/08_2_hello_world_browser.png new file mode 100644 index 0000000000000000000000000000000000000000..1b7b927ec1a07f19001b2e0807ab0d52c1a5fbdc GIT binary patch literal 20516 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 U%1*Qc%6_}9S>3R#zI-R<->Km=G5`Po literal 0 HcmV?d00001 diff --git a/docs/08_web/08_2_web_server.ipynb b/docs/08_web/08_2_web_server.ipynb new file mode 100644 index 0000000..07f4eaf --- /dev/null +++ b/docs/08_web/08_2_web_server.ipynb @@ -0,0 +1,193 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Web-Server\n", + "\n", + "Vorher haben wir uns angeschaut, wie wir in Python eine HTTP-Anfrage auf einen anderen Server schicken können.\n", + "\n", + "Nun kehren wir den Spiess um:\n", + "\n", + "Wir stellen den Web-Server zur Verfügung und akzeptieren eingehende HTTP-Anfragen.\n", + "\n", + "Hierfür bauen wir uns eine sehr kleine Webanwendung mit dem leichtgewichtigen Web-Framework \"Flask\". Das Tolle an Flask ist, dass es sehr minimalistisch ist und trotzdem sehr viele wichtige Features für ein Backend von Haus aus anbietet.\n", + "\n", + "Für den Moment kannst du Flask via Kommandozeile so installieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install flask" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nun kannst du Flask bereits benutzen.\n", + "\n", + "Im Python-Code kannst du dann eine Flask-App erstellen, indem du den Konstruktor der Klasse `Flask` aufrufst. Den Rückgabewert - also das `Flask`-Objekt - benötigst du nachher noch, deswegen speicherst du es in einer Variable wie `app`:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from flask import Flask\n", + "\n", + "app = Flask(__name__)\n", + "\n", + "\n", + "@app.route('/')\n", + "def hello():\n", + " return 'Hello, World!'" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dann haben wir eine Funktion mit `@app.route('/')` annotiert. Dies hat den Zweck, dass die annotierte Funktion aufgerufen wird, wenn der Pfad \"[unser Server]/\" geladen wird.\n", + "\n", + "Das Ganze kannst du ausprobieren, indem du nächsten Code ausführen lässt:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " * Serving Flask app '__main__'\n", + " * Debug mode: off\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.\n", + " * Running on http://127.0.0.1:5000\n", + "Press CTRL+C to quit\n", + "127.0.0.1 - - [23/May/2023 10:46:46] \"GET / HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [23/May/2023 10:46:51] \"GET /home HTTP/1.1\" 200 -\n" + ] + } + ], + "source": [ + "if __name__ == '__main__':\n", + " app.run()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nun kannst du folgende URL im Browser des gleichen Computers laden: http://127.0.0.1:5000/\n", + "\n", + "Du solltest nun im Browser den Text \"Hello, World!\" sehen:\n", + "\n", + "![Hello, World!](./08_2_hello_world_browser.png)\n", + "\n", + "Dieser Text ist genau der Output der Funktion `hello()`.\n", + "\n", + "Wenn du dann weiterentwickelst, vergiss nicht, die Ausführung wieder zu beenden, damit der Server gestoppt wird!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Standardmässig geben solche Methoden, die mit `@app.route(...)` annotiert sind, eine Webseite - also ein HTML-String - zurück.\n", + "\n", + "Nachfolgend das gleiche Beispiel mit einer HTML-Seite:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "@app.route('/home')\n", + "def about():\n", + " return '''\n", + "

Hello

\n", + "

Welcome to my Website!

\n", + "

You can only expect the best on this page!

\n", + "
\n", + " \n", + " \n", + "
\n", + "

4m@?aPTU>}+pt$X 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ª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 Fe*yN0drklV literal 0 HcmV?d00001 diff --git a/docs/07_project_structure/3_vscode_create_python_launch.png b/docs/07_project_structure/3_vscode_create_python_launch.png new file mode 100644 index 0000000000000000000000000000000000000000..eb41fa138795b2bb048b5e5cc45173b491bedf85 GIT binary patch literal 19211 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℞!EJi|DtIXqY!}S|QFCE7#jeyH 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ʲ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 S?Uw_-&Y!b6Tk!k!yZ-}Ya6BCV literal 0 HcmV?d00001 From 54356b1a7dc9debfa715220e929218880eff1c71 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 16 May 2023 17:16:03 +0200 Subject: [PATCH 48/70] theory: classes (intro) --- docs/06_oop/06_1_classes.ipynb | 200 +++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 docs/06_oop/06_1_classes.ipynb diff --git a/docs/06_oop/06_1_classes.ipynb b/docs/06_oop/06_1_classes.ipynb new file mode 100644 index 0000000..30a2625 --- /dev/null +++ b/docs/06_oop/06_1_classes.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Klassen\n", + "Während des Programmieren stellst du schnell fest, dass bestimmte Variablen zueinander gehören und dass oft ähnliche Operationen mit dem gleichen Variablen durchgeführt werden.\n", + "\n", + "\n", + "Nehmen wir das Beispiel eines Baumes. Nehmen wir an, dass ein Baum einen Namen/eine Art `species` sowie eine bestimmte Höhe `height` besitzt.\n", + "\n", + "Angenommen, wir hätten zwei Bäume. Ein Anfänger in Python könnte es ungefähr so versuchen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "species_oak = \"oak\"\n", + "species_pine = \"pine\"\n", + "\n", + "height_oak = 10\n", + "height_pine = 8\n", + "\n", + "def describe(species, height):\n", + " return f\"This tree is a {species} and is {height} m tall.\"\n", + "\n", + "\n", + "print( describe(species_oak, height_oak) )\n", + "print( describe(species_pine, height_pine) )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In diesem Beispiel sehen wir aber schon, dass bestimmte Werte zum \"Gleichen\" dazugehören. Nämlich hat ein Baum jeweils eine `species` und eine `height`.\n", + "\n", + "Dass ein Baum immer diese Werte haben kann, können wir definieren. Das können wir mit einer Klassen-Definition erzielen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, species, height):\n", + " self.species = species\n", + " self.height = height\n", + "\n", + " # Methode\n", + " def describe(self):\n", + " return f\"This tree is a {self.species} and is {self.height} m tall.\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit dem Keyword `class` haben wir die neue Klasse `Tree` eingeleitet.\n", + "\n", + "Die Methode (=Funktion) `__init__(self, ...)` wird Konstruktor genannt. Das ist eine spezielle Methode, die immer aufgerufen wird, wenn ein neues Objekt von dieser Klasse erzeugt wird. Im folgenden Code erzeugen (\"initialisieren\") wir ein neues Objekt `oak` vom Typ `Tree`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "oak = Tree(\"oak\", 10)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier haben wir ein neues Objekt vom Typ `Tree` erstellt und der Variable `oak` zugewiesen.\n", + "\n", + "Mit diesem Code `Tree(\"oak\", 10)` haben wir den Konstruktor aufgerufen und folgende Werte übergeben, die dann im Konstruktor verfügbar sind: `species: \"oak\", height: 10`.\n", + "\n", + "Das Argument `self` wird bei Python automatisch übersprungen bzw. automatisch übergeben. Dieses `self` ist im Prinzip eine Referenz auf sich selber.\n", + "\n", + "Mit `self.species = species` wird im Objekt der Klasse eine Variable `species` gespeichert. Wichtig zu erwähnen ist hierbei, dass das `species` ohne `self.` vorne dran ein völlig normales Argument aus dem Parameter des Konstruktors ist. Die beiden Variablen müssen auch nicht gleich heissen. Z.B. würde auch das funktionieren: `self.species = \"hello\"`\n", + "\n", + "Auf diese Weise können also Variablen definiert werden, die im Objekt gespeichert werden. Dies ist übrigens eine bekannte Schreibweise, um zu definieren, welche Eigenschaften (also Variablen) eine Klasse besitzt." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wir haben in der Klasse auch eine Funktion/Methode definiert: `describe()`.\n", + "\n", + "Diese können wir für ein Objekt aufrufen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "oak.describe()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Hinweis zu `self`**\n", + "\n", + "Dir ist sicherlich auch das `self` im Parameter der `describe(self)`-Methode aufgefallen. Das Argument `self` wird automatisch übergeben und ist hier automatisch das Objekt `oak`, weil das vor dem `.describe()` stand.\n", + "\n", + "Das `self` ist somit die Information, auf welchem Objekt die Methode aufgerufen wird." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zusammenfassung\n", + "Den Code ganz oben können wir mit Hilfe der Klasse wie folgt umformulieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, species, height):\n", + " self.species = species\n", + " self.height = height\n", + "\n", + " # Methode\n", + " def describe(self):\n", + " return f\"This tree is a {self.species} and is {self.height} m tall.\"\n", + "\n", + "\n", + "oak = Tree(\"oak\", 10)\n", + "pine = Tree(\"pine\", 8)\n", + "\n", + "print( oak.describe() )\n", + "print( pine.describe() )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie du hier sehen konntest, kann Programmieren mit Klassen (sogenanntes objekt-orientiertes Programmieren) stark dabei helfen, den Code \"wiederverwendbar\" zu machen.\n", + "\n", + "Das bedeutet z.B., dass wir automatisch eine Variable `species` und `height` bei unseren `Tree`-Objekten initialisieren.\n", + "\n", + "Ausserdem erzwingen wir automatisch, dass wir bei jedem solchen Objekt einen Wert für `species` und `height` angeben müssen (auch wenn er `None` sein kann). Das macht es für uns als Entwickler:innen einfacher, Fehler im Code früher zu bemerken, weil wir automatisch schon beim Erstellen des Objektes darauf aufmerksam gemacht werden, dass z.B. ein Wert vergessen gegangen ist.\n", + "\n", + "Ein weiterer Vorteil von objekt-orientierter Programmierung (=Verwendung von Klassen) ist es, dass der Code verständlicher, aufgeräumter und einfacher wartbar (wenn jemand anderes z.B. Änderungen daran vornehmen muss) wird." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9448f030efeb886b77ab07deee65ef11d82ca945 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 16 May 2023 18:15:04 +0200 Subject: [PATCH 49/70] theory: magic methods --- docs/06_oop/06_1_classes.ipynb | 4 +- docs/06_oop/06_2_methods_in_classes.ipynb | 279 ++++++++++++++++++++++ docs/06_oop/06_2_repr_debug.png | Bin 0 -> 45078 bytes 3 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 docs/06_oop/06_2_methods_in_classes.ipynb create mode 100644 docs/06_oop/06_2_repr_debug.png diff --git a/docs/06_oop/06_1_classes.ipynb b/docs/06_oop/06_1_classes.ipynb index 30a2625..59c7d9f 100644 --- a/docs/06_oop/06_1_classes.ipynb +++ b/docs/06_oop/06_1_classes.ipynb @@ -91,7 +91,9 @@ "\n", "Das Argument `self` wird bei Python automatisch übersprungen bzw. automatisch übergeben. Dieses `self` ist im Prinzip eine Referenz auf sich selber.\n", "\n", - "Mit `self.species = species` wird im Objekt der Klasse eine Variable `species` gespeichert. Wichtig zu erwähnen ist hierbei, dass das `species` ohne `self.` vorne dran ein völlig normales Argument aus dem Parameter des Konstruktors ist. Die beiden Variablen müssen auch nicht gleich heissen. Z.B. würde auch das funktionieren: `self.species = \"hello\"`\n", + "Mit `self.species = species` wird im Objekt der Klasse eine Variable `species` gespeichert. Wichtig zu erwähnen ist hierbei, dass das `species` ohne `self.` vorne dran ein völlig normales Argument aus dem Parameter des Konstruktors ist. Die beiden Variablen müssen auch nicht gleich heissen. Z.B. würde auch das funktionieren: `self.species = \"hello\"`.\n", + "\n", + "Möchte man innerhalb der Klasse auf Variablen zugreifen, die auf Objekt-Ebene gespeichert sind, dann muss `self.` vorne dran geschrieben werden, damit man auf das Objekt zugreifen kann.\n", "\n", "Auf diese Weise können also Variablen definiert werden, die im Objekt gespeichert werden. Dies ist übrigens eine bekannte Schreibweise, um zu definieren, welche Eigenschaften (also Variablen) eine Klasse besitzt." ] diff --git a/docs/06_oop/06_2_methods_in_classes.ipynb b/docs/06_oop/06_2_methods_in_classes.ipynb new file mode 100644 index 0000000..777b6af --- /dev/null +++ b/docs/06_oop/06_2_methods_in_classes.ipynb @@ -0,0 +1,279 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Magic Methods\n", + "In der vorherigen Einführung zu Klassen haben wir bereits eine Art kennengelernt, wie Methoden (=Funktionen) in Klassen definiert werden können.\n", + "\n", + "In diesem Kapitel möchten wir Dir einige sehr wichtige Standard-Methoden in Klassen näherbringen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unter \"magic methods\" oder \"dunder methods\" verstehen wir Methoden, die von Python aus vordefinierte Namen besitzen und automatisch unter bestimmten Umständen ausgeführt werden." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Konstruktor\n", + "Den Konstruktor hast du bereits bei der Einführung kennengelernt.\n", + "\n", + "Der Konstruktor muss den Namen `__init__` haben." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, species, height):\n", + " self.species = species\n", + " self.height = height\n", + "\n", + "\n", + "oak = Tree(\"oak\", 10)\n", + "\n", + "print(oak.species)\n", + "print(oak.height)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Den Konstruktor haben wir hier auf folgende Weise aufgerufen: `Tree(\"oak\", 10)`.\n", + "\n", + "Wir rufen den Konstruktor also auf, indem wir den Namen der Klasse angeben und dann in Klammern Werte für die Argumente mitgeben.\n", + "\n", + "Das Argument `self` muss nie manuell gesetzt werden. Der wird praktisch immer automatisch übergeben. Beim Konstruktor ist es das Objekt, das neu erstellt wird." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## To String\n", + "Wenn wir ein Objekt direkt mit `print(...)` ausgeben, dann möchten wir einen nützlichen Text sehen.\n", + "\n", + "Hierfür gibt es die `__str__`-Methode, die automatisch ein Objekt in einen String konvertiert. Siehe dieses Beispiel:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, species, height):\n", + " self.species = species\n", + " self.height = height\n", + "\n", + " # To String\n", + " def __str__(self):\n", + " return f\"This tree is a {self.species} and is {self.height} m tall.\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wenn wir nun ein Objekt dieses Types `print`en, dann wird automatisch der Rückgabewert dieser `__str__`-Methode verwendet:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "oak = Tree(\"oak\", 10)\n", + "\n", + "print( oak )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchtest du ein Objekt in eine String-Variable packen, dann kannst du das mit der `str(...)`-Funktion tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "variable = str(oak)\n", + "\n", + "variable" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die `str(...)`-Funktion ruft automatisch die `__str__(self)`-Methode des Objektes auf." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## String Representation eines Objektes\n", + "\n", + "Sehr bekannt ist auch die Methode `__repr__(self)`. Sie erfüllt praktisch den gleichen Zweck wie `__str__`.\n", + "\n", + "Wenn sie nicht definiert ist, gibt sie (wie `__str__` auch) zurück, was für eine Klasse hinter dem Objekt steckt und wo im Arbeitsspeicher sie gespeichert ist:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(str(oak))\n", + "print(repr(oak))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die `__repr__`-Funktion wird eher im Debugging-Umfeld verwendet.\n", + "\n", + "Aber zuerst einmal ein Beispiel, wie sie definiert sein könnte:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, species, height):\n", + " self.species = species\n", + " self.height = height\n", + "\n", + " # To String\n", + " def __str__(self) -> str:\n", + " return f\"This tree is a {self.species} and is {self.height} m tall.\"\n", + " \n", + " # Repr\n", + " def __repr__(self) -> str:\n", + " return f\"Tree: species: {self.species}, height: {self.height}\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Versuche im folgenden Code einen Break-Point bei der ersten `print(...)`-Anweisung zu aktivieren und den den Code zu debuggen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pine = Tree(\"pine\", 8)\n", + "\n", + "print(str(pine))\n", + "print(repr(pine))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dann wirst du sehen, dass bei der Schnell-Ansicht des Debuggers für die Variable der Wert der `__repr__`-Methode angezeigt wird:\n", + "\n", + "![Debugging mit repr](./06_2_repr_debug.png)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Weitere Magic Methods\n", + "\n", + "Weitere solche Magic Methods sind hier aufgelistet: https://docs.python.org/3/reference/datamodel.html#special-method-names\n", + "\n", + "Hier noch eine Zusammenfassung von den bekanntesten. Du wirst keinen davon zwingend brauchen, ist aber gut zu wissen, was Du alles übersteuern kannst:\n", + "\n", + "* `__len__`: Gibt den Wert für den Aufruf von `len(...)`.\n", + "* Vergleichen von zwei Objekten:\n", + " * `__eq__`: Operator `==`.\n", + " * `__ne__`: Operator `!=`.\n", + " * `__lt__`: Operator `<`.\n", + " * `__gt__`: Operator `>`.\n", + " * `__le__`: Operator `<=`.\n", + " * `__ge__`: Operator `>=`.\n", + "* Mathematische Operationen:\n", + " * `__add__`: Operator `+`.\n", + " * `__sub__`: Operator `-`.\n", + " * `__mul__`: Operator `*`.\n", + " * `__div__`: Operator `/`.\n", + " * `__mod__`: Operator `%` (Modulo).\n", + " * `__pow__`: Operator `**` (Hochrechnen).\n", + "* Container Types:\n", + " * `__getitem__`: Zugriff auf ein Element mit [].\n", + " * `__setitem__`: Setzen eines Elements mit [].\n", + " * `__contains__`: Prüfen, ob ein anderes Element in diesem Objekt drin ist. Verwendet für den `in`-Operator.\n", + "* `with`-Statement:\n", + " * `__enter__`: Wird beim Betreten eines `with`-Blocks aufgerufen.\n", + " * `__exit__`: Wird beim Verlassen eines `with`-Blocks aufgerufen." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/06_oop/06_2_repr_debug.png b/docs/06_oop/06_2_repr_debug.png new file mode 100644 index 0000000000000000000000000000000000000000..0fcb69a5dec585852fd1c434121b87307f5c4b22 GIT binary patch literal 45078 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 literal 0 HcmV?d00001 From a1fc9d05a86c108b210f45eaa4f9a035e1d7292d Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Tue, 16 May 2023 18:15:28 +0200 Subject: [PATCH 50/70] theory: debug python project --- .../07_4_run_project.ipynb | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/docs/07_project_structure/07_4_run_project.ipynb b/docs/07_project_structure/07_4_run_project.ipynb index e69de29..e964ea5 100644 --- a/docs/07_project_structure/07_4_run_project.ipynb +++ b/docs/07_project_structure/07_4_run_project.ipynb @@ -0,0 +1,68 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Projekt ausführen\n", + "\n", + "Dein Projekt kannst du z.B. wie folgt ausführen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!poetry run python3 src//__init__.py" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Projekt mit VS Code debuggen\n", + "\n", + "In VS Code kannst du dein Projekt so konfigurieren, dass es automatisch (im Debugging-Modus) ausgeführt wird, wenn du die [F5]-Taste klickst.\n", + "\n", + "* Hierfür klickst du im \"Run and Debug\"-Tab auf \"create a launch.json file\".\n", + "\n", + "![Interpreter ändern](./2_vscode_create_launch_json.png)\n", + "\n", + "* anschliessend wählst du eines der ersten beiden Elemente aus (vorzugsweise Module):\n", + "\n", + "![Interpreter ändern](./3_vscode_create_python_launch.png)\n", + "\n", + "\n", + "Das generiert die ungefähr folgenden Code in der Datei `.vscode/launch.json`:\n", + "```json\n", + "{\n", + " \"version\": \"0.2.0\",\n", + " \"configurations\": [\n", + " {\n", + " \"name\": \"Python: Poetry\",\n", + " \"type\": \"python\",\n", + " \"request\": \"launch\",\n", + " \"module\": \"demo\",\n", + " \"justMyCode\": true\n", + " }\n", + " ]\n", + "}\n", + "```\n", + "\n", + "Nun startet dein Projekt, wenn du [F5] auf deiner Tastatur klickst." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 54703f5dc9eca6f386df670ce63388953f493b11 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 22 May 2023 11:26:40 +0200 Subject: [PATCH 51/70] fixed whitespace --- docs/06_oop/06_2_methods_in_classes.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/06_oop/06_2_methods_in_classes.ipynb b/docs/06_oop/06_2_methods_in_classes.ipynb index 777b6af..7e5393b 100644 --- a/docs/06_oop/06_2_methods_in_classes.ipynb +++ b/docs/06_oop/06_2_methods_in_classes.ipynb @@ -140,7 +140,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## String Representation eines Objektes\n", + "## String Representation eines Objektes\n", "\n", "Sehr bekannt ist auch die Methode `__repr__(self)`. Sie erfüllt praktisch den gleichen Zweck wie `__str__`.\n", "\n", From 52e0e6d220ae47794b1e0aca46819fa8c04db828 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 22 May 2023 11:26:58 +0200 Subject: [PATCH 52/70] theory: type of methods --- docs/06_oop/06_3_types_of_methods.ipynb | 290 ++++++++++++++++++++++++ 1 file changed, 290 insertions(+) create mode 100644 docs/06_oop/06_3_types_of_methods.ipynb diff --git a/docs/06_oop/06_3_types_of_methods.ipynb b/docs/06_oop/06_3_types_of_methods.ipynb new file mode 100644 index 0000000..5374688 --- /dev/null +++ b/docs/06_oop/06_3_types_of_methods.ipynb @@ -0,0 +1,290 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Methoden-Arten\n", + "\n", + "Im Zusammenhang mit Klassen solltest du zwischen diesen Arten von Methoden unterscheiden können:\n", + "* Instanz-Methoden (gewöhnliche Methoden)\n", + "* Statische Methoden (`@staticmethod` und `@classmethod`)\n", + "\n", + "In den aller meisten Fällen wirst du Instanz-Methoden verwenden, statische Methoden können aber manchmal sehr nützlich sein." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instanz-Methoden\n", + "\n", + "Instanz-Methoden wurden vorher schon vorgestellt. Sie sind Methoden, die dann auf einer Instanz (also einem Objekt) ausgeführt werden.\n", + "\n", + "Für folgende Klasse definieren wir genau 1 neue Instanz-Methode (`talk`):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Instanz-Methode\n", + " def talk(self):\n", + " return \"Hello I'm a rubber tree and I'm just standing here a little, like this.\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchten wir nun diese Methode aufrufen, dann müssen wir zuerst eine Instanz (also ein Objekt) dieser Klasse erzeugen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rubber_tree = Tree()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Und anschliessend können wir die Methode auf der Instanz aufrufen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rubber_tree.talk()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Was hingegen nicht funktioniert, ist, die Methode direkt auf der Klasse auszuführen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Tree.talk()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Führst du den vorherigen Code aus, dann wird reklamiert, dass das Argument `self` nicht übergeben wurde...\n", + "\n", + "Rufst du die Methode auf einer Instanz (hier `rubber_tree`) auf, dann wird implizit die Instanz als erstes Argument übergeben (für den Parameter `self`).\n", + "\n", + "`rubber_tree.talk()` ruft im Prinzip das auf:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Tree.talk(rubber_tree)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kurz zusammengefasst, eine Instanz-Methode\n", + "* ist immer mit einer Instanz (Objekt) verknüpft und muss daher auf einem Objekt (nicht der Klasse direkt) ausgeführt werden\n", + "* und hat immer `self` als erstes Argument im Parameter." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Statische Methoden\n", + "In bestimmten Fällen kommt es vor, dass du eine Methode in einer Klasse haben willst, du aber für den Aufruf der Methode noch kein Objekt der Klasse instantiiert haben willst oder kannst." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### @classmethod\n", + "\n", + "Ein bekanntes Beispiel für eine statische \"Klassen-Methode\" ist das instantiieren eines neues Objektes anhand eines speziellen Datentypes wie einem Dictionary. Im folgenden Beispiel erhalten wir ein Dictionary als Input und wandeln es in ein Objekt der Klasse `Tree` um:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, species, height):\n", + " self.species = species\n", + " self.height = height\n", + "\n", + " # Instanz-Methode\n", + " def describe(self):\n", + " return f\"This tree is a {self.species} and is {self.height} m tall.\"\n", + "\n", + " # Klassen-Methode\n", + " @classmethod\n", + " def from_dict(cls, my_dict: dict):\n", + " return cls(my_dict[\"species\"], my_dict[\"height\"])\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Und so rufen wir sie auf:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_input = {\n", + " \"species\": \"oak\",\n", + " \"height\": 10,\n", + "}\n", + "\n", + "oak = Tree.from_dict(my_input)\n", + "\n", + "oak.describe()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Der Fokus in diesem Beispiel liegt auf der statischen Klassen-Methode:\n", + "```python\n", + "@classmethod\n", + "def from_dict(cls, my_dict: dict):\n", + " return cls(my_dict[\"species\"], my_dict[\"height\"])\n", + "```\n", + "\n", + "Die Annotation `@classmethod` bewirkt, dass\n", + "* die Methode direkt auf der Klasse aufgerufen werden kann\n", + "* und dass das erste Argument `cls` automatisch übergeben wird.\n", + "\n", + "Das erste Argument `cls` ist ist kurz und steht für `class`. In diesem Beispiel ist `cls = Tree`.\n", + "\n", + "Die Anweisung\n", + "```python\n", + "cls(\"oak\", 10)\n", + "```\n", + "\n", + "ist im Prinzip das Gleiche wie\n", + "```python\n", + "Tree(\"oak\", 10)\n", + "```\n", + "\n", + "In diesem statischen Kontext hast du aber möglicherweise noch kein Zugriff auf die Klasse `Tree` und musst womöglich wie in diesem Beispiel über `@classmethod` und `cls` kehren." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### @staticmethod\n", + "\n", + "Mit `@staticmethod` kannst du statische Methoden definieren. Im Gegensatz zu `@classmethod` wirst du keine Referenz auf die Klasse selber benötigen. Deswegen entfällt der erste Parameter `cls`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # statische Methode (ohne cls)\n", + " @staticmethod\n", + " def random_quote() -> str:\n", + " # source of quote: unknown.\n", + " return \"Trees are nature's way of showing us that even when we're rooted, we can still branch out.\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Methode kannst du nun wie folgt aufrufen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Tree.random_quote()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From d83654da56310c6137bc78f5bcbf841ee510fa96 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 22 May 2023 11:27:09 +0200 Subject: [PATCH 53/70] theory: variables in classes --- docs/06_oop/06_4_variables_in_classes.ipynb | 346 ++++++++++++++++++++ 1 file changed, 346 insertions(+) create mode 100644 docs/06_oop/06_4_variables_in_classes.ipynb diff --git a/docs/06_oop/06_4_variables_in_classes.ipynb b/docs/06_oop/06_4_variables_in_classes.ipynb new file mode 100644 index 0000000..7bb2f96 --- /dev/null +++ b/docs/06_oop/06_4_variables_in_classes.ipynb @@ -0,0 +1,346 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Variablen in Klassen\n", + "Klassen bieten sich an, um verschiedene Variablen zu gruppieren, die zusammengehören." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Statische Variablen\n", + "Hast du Variablen, die zusammengehören und nur einmal im Programm vorkommen, dann könntest du diese z.B. statisch in einer Klasse zusammenfassen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class DataBaseConfig:\n", + " DATABASE_URL: str = \"mysql://username:password@host:port/database_name\"\n", + " user_name: str\n", + " password: str" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Auf diese Variablen kannst du dann wie folgt zugreifen und sie manipulieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(DataBaseConfig.DATABASE_URL)\n", + "DataBaseConfig.user_name = \"admin\"\n", + "DataBaseConfig.password = \"hello123\"\n", + "\n", + "# Print out the top secret credentials :)\n", + "print(DataBaseConfig.user_name, DataBaseConfig.password)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Das ist bereits die Theorie, wie du statische Variablen in Klassen definieren kannst.\n", + "\n", + "Bitte merke dir, dass in Python trotzdem komisches Zeug funktioniert wie das:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "instance = DataBaseConfig()\n", + "\n", + "instance.user_name = \"tux\"\n", + "\n", + "print(instance.user_name)\n", + "print(DataBaseConfig.user_name)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie du siehst, werden diese Variablen auch zusätzlich im Objekt neu erstellt.\n", + "\n", + "Dies ist nicht weiter schlimm, aber denke daran, dass das nicht der Zweck von statischen Variablen sein sollte. Diese Variablen solltest du besser nicht auf dem Objekt anschauen oder manipulieren, weil die Variablen nicht für diesen Zweck definiert worden sind." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instanz-Variablen\n", + "\n", + "Oft gruppierst du Variablen in Klassen, die mehrmals verwendet werden sollen.\n", + "\n", + "Z.B. dein geliebtes Beispiel der Baum-Klasse `Tree`.\n", + "\n", + "Möglicherweise möchtest du mehrere Bäume instantiieren und die Variable `height` z.B. für jeden Baum anders setzen. Statisch macht die Variable `height` aber keinen Sinn.\n", + "\n", + "Normalerweise werden Instanz-Variablen im Konstruktor definiert, indem sie auf der Variable `self` zugewiesen werden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, my_species, my_height):\n", + " self.species = my_species\n", + " self.height = my_height" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verwenden Kannst du die Variablen dann wie folgt:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pine = Tree(\"pine\", 8)\n", + "\n", + "print(pine.species) # lesen\n", + "print(pine.height)\n", + "\n", + "\n", + "# schreiben:\n", + "pine.height = 9\n", + "pine.species = \"pine tree\"\n", + "\n", + "print(pine.species) # lesen\n", + "print(pine.height)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Datenklassen\n", + "Sehr oft hast du Klassen, die nur dazu dienen, Daten zu speichern und keine statischen Variablen besitzen.\n", + "\n", + "In diesem Fall kannst du dir den Konstruktor sparen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from dataclasses import dataclass\n", + "\n", + "@dataclass\n", + "class Tree:\n", + " # Instanz-Variablen\n", + " species: str\n", + " height: float" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verwendest du die `@dataclass`-Annotation, dann\n", + "* kannst du die Variablen ohne schlechtes Gewissen direkt in die Klasse reinschreiben\n", + "* und der Konstruktor wird für dich automatisch generiert.\n", + "\n", + "Die Klasse kannst du dann wie folgt verwenden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sausage_tree = Tree(\"Sausage Tree (Kigelia africana)\", 15)\n", + "\n", + "print(sausage_tree)\n", + "\n", + "sausage_tree.height = 20\n", + "\n", + "print(sausage_tree)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Verwendung von `@dataclass` bringt dir u.A. folgende Vorteile:\n", + "* Konstruktor, `__str__` und `__repr__` werden automatisch implementiert.\n", + "* Datenklassen sind oft lesbarer.\n", + "* Variablen können als immutable (unveränderbar) definiert werden. (Verwende `@dataclass(frozen=True)`)\n", + "* Helper-Funktionen wie z.B. `asdict(...)`.\n", + "\n", + "Der letzte Punkt möchte deutlich machen, dass viele hilfreiche Funktionen bei Datenklassen automatisch implementiert wurden. Möchtest du z.B. das Objekt in ein Dictionary umwandeln, dann kannst du das mit der `asdict(...)`-Funktion tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from dataclasses import asdict\n", + "\n", + "\n", + "sausage_tree = Tree(\"Sausage Tree (Kigelia africana)\", 15)\n", + "\n", + "tree_as_dict: dict = asdict(sausage_tree)\n", + "\n", + "print(tree_as_dict)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die `@dataclass`-Annotation vereinfacht es sehr stark, Klassen zum Speichern von Variablen zu erstellen.\n", + "\n", + "Trotzdem fehlen bei `@dataclass`s viele Funktionen, weshalb in der Praxis sehr oft das Package \"pydantic\" verwendet wird.\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sichtbarkeit von Variablen und Methoden\n", + "Oftmals besitzen Klassen Variablen, die sichtbar sein sollen und solche, die dem Anwender der Klasse nicht ersichtlich sein sollte.\n", + "\n", + "Es ist eine Good-Practice, Variablen und Methoden zu verstecken, die nicht ausserhalb der Klasse verwendet werden sollten.\n", + "\n", + "Im folgenden Beispiel wird in der Klasse zusätzlich gespeichert, wann dass der Baum gepflanzt (erstellt) wurde:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from datetime import datetime\n", + "\n", + "\n", + "class Tree:\n", + " # Konstruktor\n", + " def __init__(self, my_species, my_height):\n", + " self.species = my_species\n", + " self.height = my_height\n", + " self.__planted = datetime.now() # private Variable.\n", + " \n", + " def get_date_planted(self) -> datetime:\n", + " return self.__planted" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Variable `__planted` beginnt mit 2 Underscores, damit klar ist, dass die Variable private ist und man folglich nicht ausserhalb der Klasse darauf zugreifen soll.\n", + "\n", + "In der Klasse selber kann und darf ohne Einschränkungen darauf zugegriffen werden. Die Methode `get_date_planted()` gibt diesen Wert zurück:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sausage_tree = Tree(\"Sausage Tree (Kigelia africana)\", 15)\n", + "\n", + "sausage_tree.get_date_planted()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Was hingegen vermieden werden soll (und teilweise automatisch einen Fehler wirft), ist, ausserhalb der Klasse auf solche Variablen mit `__` am Anfang des Namens zuzugreifen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sausage_tree.__planted" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie wir hier sehen, definieren diese Underscores die Sichtbarkeit der Variable. Das Gleiche gilt auch für Methoden.\n", + "\n", + "Folgendes sind die wichtigsten Sichtbarkeitsstufen:\n", + "* public (ohne Underscores am Anfang): Dieses Feld ist immer sichtbar.\n", + "* protected, beginnend mit 1 Underscore (`_`): Dieses Feld ist nur in der Klasse und deren Subklassen (folgt in einem späteren Kapitel) sichtbar, aber nicht von aussen.\n", + "* private, beginnend mit 2 Underscores (`__`): Dieses Feld ist nur in der Klasse sichtbar, von aussen nie." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 71b38c7f9e6a26cf6a5bc41024ad7e80b0fc0379 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 22 May 2023 14:06:12 +0200 Subject: [PATCH 54/70] theory: pydantic --- docs/06_oop/06_5_pydantic.ipynb | 369 ++++++++++++++++++++++++++++++++ 1 file changed, 369 insertions(+) create mode 100644 docs/06_oop/06_5_pydantic.ipynb diff --git a/docs/06_oop/06_5_pydantic.ipynb b/docs/06_oop/06_5_pydantic.ipynb new file mode 100644 index 0000000..44f3eae --- /dev/null +++ b/docs/06_oop/06_5_pydantic.ipynb @@ -0,0 +1,369 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# pydantic\n", + "Im vorherigen Kapitel haben wir `@dataclass`es angeschaut. Diese haben eine kurze und sehr praktische Möglichkeit angeboten, Klassen für die Speicherung von Daten zu erstellen.\n", + "\n", + "Im Zusammenhang mit Daten müssen oft weitere Dinge gemacht werden, die sich immer wieder wiederholen:\n", + "* Die Struktur einer Klasse definieren (welche Variablen hat die Klasse).\n", + "* Daten (Werte) überprüfen, z.B. anhand des Datentypes.\n", + "* (De)Serialization: Daten umwandeln von oder nach JSON, XML oder YAML.\n", + "\n", + "Pydantic widmet sich genau diesen Themen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pydantic installieren" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pydantic ist nicht in der Standard-Installation von Python enthalten und muss daher zuerst heruntergeladen werden.\n", + "\n", + "Um es zu installieren, füge das Package `pydantic` zu deinen Dependencies hinzu." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verwendest du bereits Poetry (wird im Kapitel \"project_structure\" später erläutert), dann kannst du das mit folgendem Kommandozeilenbefehl tun:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!poetry add pydantic" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verwendest du kein Poetry, dann ist eine Good-Practice, die verwendeten Dependencies in einer Datei zu notieren, damit andere Entwickler wissen, welche Dependencies/Packages sie auch benötigen.\n", + "\n", + "Solche Dependencies werden oft in der Datei `requirements.txt` gespeichert, wobei jede Zeile der Name der Dependency ist (kann auch die Version enthalten).\n", + "\n", + "In diesem Fall macht es Sinn, nicht die Dependency alleine zu installieren, sondern so, wie sie in der Dependency-Datei definiert ist. Das kann mit dem Befehl `pip install -r ` (`-r` für \"requirements\") erreicht werden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! echo pydantic > ./requirements.txt\n", + "\n", + "! pip install -r ./requirements.txt" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bist du hingegen ein kleiner Erfinder und unstrukturierter Bastler, dann reicht folgender Kommandozeilenbefehl aus:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install pydantic" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datenklasse erstellen\n", + "\n", + "Eine neue Datenklasse kann ziemlich ähnlich mit pydantic erstellt werden wie mit der `@dataclass`-Annotation. Zu Beachten ist, dass die neue Datenklasse (auch Model genannt) von der pydantic-Klasse `BaseModel` erben muss, sprich nach dem Namen der Klasse muss in Klammern `BaseModel` angegeben werden:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pydantic import BaseModel\n", + "\n", + "\n", + "class Tree(BaseModel):\n", + " # Instanz-Variablen\n", + " species: str\n", + " height: float\n", + "\n", + " def describe(self):\n", + " return f\"This tree is a {self.species} and is {self.height} m tall.\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Klasse kann dan ziemlich ähnlich wie eine `@dataclass`-Klasse verwendet werden.\n", + "\n", + "Beachte, dass beim Konstruktor die Namen der Argumente angegeben werden muss:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dracula_tree = Tree(species=\"Dracula Orchid\", height=0.2)\n", + "\n", + "dracula_tree.describe()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Validierung\n", + "Pydantic wird oft auch dafür verwendet, um Python mit Features zu versehen, die typisierte Programmiersprachen oft schon mitbringen: Prüfen, ob der Datentyp bei einer Zuweisung stimmt.\n", + "\n", + "Bei unserem Model (=Datenklasse) haben wir angegeben, dass die `height` vom Typ `float` ist. Pydantic berücksichtigt diese Information und wirft einen Fehler, wenn etwas anderes als eine Zahl versucht wird, zuzuweisen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dracula_tree = Tree(species=\"Baobab Tree\", height=\"twenty\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zusätzlich ist es möglich, weitere Bedingungen an die Variablen zu knüpfen, bspw. dass die Höhe grösser als `0` sein muss. Hierfür weisen wir dem Feld den Rückgabewert der Funktion `Field(...)` zu:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pydantic import BaseModel, Field\n", + "\n", + "class Tree(BaseModel):\n", + " species: str = Field(..., description=\"The species of the tree.\")\n", + " height: float = Field(..., gt=0, description=\"The height of the tree in meters.\")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Das `description`-Argument hat keine Funkion. Sie wird oft dafür verwendet, um den Sinn und die Verwendung der Variable zu dokumentieren, damit ein andere(r) Entwickler:in versteht, wofür die Variable verwendet wird.\n", + "\n", + "Für die Variable `height` wurde das Argument `gt` spezifiziert. Dies steht für \"greater than\" (also grösser als). Mit diesem optionalen Argument können wir festlegen, dass keine Werte unter 0 akzeptiert werden.\n", + "\n", + "Folglich sollte folgendes funktionieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pancake_tree = Tree(species=\"Pancake Tree\", height=13)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Und folgendes natürlich nicht:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dwarf_willow_tree = Tree(species=\"Dwarf Willow\", height=-0.02)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Neben `gt` gibt es viele weitere Parameter, die hilfreich im Bezug auf Validierung sind. Hier sind einige aufgelistet:\n", + "* `gt`: grösser als.\n", + "* `ge`: Grösser oder gleich.\n", + "* `lt`: Kleiner als.\n", + "* `le`: Kleiner oder gleich.\n", + "* `ne`: ungleich.\n", + "* `anystr_length`: Länge eines Strings.\n", + "* `regex`: Regex, der die Variable \"matchen\" muss.\n", + "* `email`: Muss eine Email sein.\n", + "* `url`: Muss eine URL sein.\n", + "* `positive`: Muss eine positive Zahl sein.\n", + "* `negative`: Muss eine negative Zahl sein.\n", + "* `none`: Nur `None` ist als Wert zulässig.\n", + "\n", + "Hier findest du mehr Parameter und Beispiele: https://docs.pydantic.dev/latest/usage/schema/#field-customization-parameters" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Serialization\n", + "\n", + "Unter diesem Begriff verstehen wir das Umwandeln vom Objekt in ein \"serialisiertes\" Format wie JSON, XML oder YAML. Pydantic unterstützt das Konvertieren in JSON.\n", + "\n", + "Nehmen wir als Beispiel folgendes als Objekt:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corkscrew_tree = Tree(species=\"Corkscrew Willow\", height=7)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Möchten wir das Objekt als Dictionary präsentiert haben, dann bekommen wir dies mit der `json()`-Methode:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tree_as_dict = corkscrew_tree.dict()\n", + "tree_as_dict" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wenn wir es direkt als JSON-String haben möchten, dann reicht dies aus:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tree_as_json = corkscrew_tree.json()\n", + "tree_as_json" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deserialization\n", + "Deserialization ist Serialization in die andere Richtung:\n", + "\n", + "Wir haben z.B. einen JSON-String und möchten daraus ein Objekt instantiieren:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "json_string = '{\"species\": \"Elephant Foot Yam Tree\", \"height\": 2.5}'\n", + "\n", + "elephant_tree = Tree.parse_raw(json_string)\n", + "\n", + "elephant_tree" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Und wenn wir von einem Dictionary aus deserialisieren möchten:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dictionary = {\"species\": \"Tickle-Me-Not Tree\", \"height\": 1.5}\n", + "\n", + "tickle_me_not_tree = Tree.parse_obj(dictionary)\n", + "\n", + "tickle_me_not_tree" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From e11cf8a830ac1bc693a6ebc5967602a9ebfe3bc2 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 22 May 2023 15:56:37 +0200 Subject: [PATCH 55/70] theory: inheritance --- docs/06_oop/06_6_inheritance.ipynb | 386 +++++++++++++++++++++++++++++ 1 file changed, 386 insertions(+) create mode 100644 docs/06_oop/06_6_inheritance.ipynb diff --git a/docs/06_oop/06_6_inheritance.ipynb b/docs/06_oop/06_6_inheritance.ipynb new file mode 100644 index 0000000..f6a1678 --- /dev/null +++ b/docs/06_oop/06_6_inheritance.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Vererbung\n", + "\n", + "Vererbung erlaubt es, neue Klassen auf Grundlage anderer zu erstellen.\n", + "\n", + "Die neue Klasse wird oft _Subklasse_ oder _Child-Klasse_ genannt, während die alte Klasse, von welcher \"geerbt\" wird, _Parent_- oder _Base-Klasse_ genannt wird.\n", + "\n", + "Nehmen wir das Beispiel von `User`n:\n", + "* Alle User haben einen `username`.\n", + "* Alle User haben ein Profil, das man anschauen kann.\n", + "\n", + "Als Klasse könnte `User` so aussehen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from dataclasses import dataclass\n", + "\n", + "\n", + "@dataclass\n", + "class User:\n", + " username: str\n", + "\n", + " def show_profile(self):\n", + " print(f\"This is User {self.username}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`Admin`s sind auch `User`, besitzen alle Eigenschaften von `User`n und können noch mehr:\n", + "* Sie können andere User verwalten.\n", + "\n", + "Dass `Admin`s alle Eigenschaften von `User` erben soll, kann erreicht werden, indem die Parent-Klasse `User` in Klammern neben dem neuen Klassennamen hingeschrieben wird:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Admin(User):\n", + " def manage_user(self, other: User, new_username):\n", + " other.username = new_username" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nun können wir Objekte von der Klasse `User` und `Admin` erstellen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# User (kein Admin):\n", + "user123 = User(\"user123\")\n", + "pierre: User = User(\"pièrre\")\n", + "\n", + "# Admins:\n", + "tux = Admin(\"tux\")\n", + "root: User = Admin(\"root\")\n", + "chuck_norris: Admin = Admin(\"chuck_norris\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Auf allen diesen Objekten können wir das Profil anschauen, da dies bei allen `User`n möglich ist. Die `Admin`s besitzen auch diese Methode, weil die Klasse die Methode von `User` geerbt hat:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "user123.show_profile()\n", + "pierre.show_profile()\n", + "\n", + "# Admins:\n", + "tux.show_profile()\n", + "root.show_profile()\n", + "chuck_norris.show_profile()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die `manage_user(...)`-Medhode hingegen existiert nur für `Admin`s:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tux.manage_user(user123, \"user1\")\n", + "root.manage_user(user123, \"user2\")\n", + "chuck_norris.manage_user(user123, \"user3\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Das Konzept der Vererbung folgt dem Prinzip der Wiederverwendung von Code. Das bedeutet, dass du nicht für alle Subklassen die gleichen Methoden selber neu implementieren musst, sondern, dass es reicht, dass du sie in der Base-Klasse implementierst." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## \"Is-A\"-Beziehung\n", + "\n", + "Beim Definieren der Variable `root` ist dir sicher aufgefallen, dass wir ein `Admin`-Objekt einer `User`-Variable zugewiesen haben:\n", + "\n", + "```python\n", + "root: User = Admin(\"root\")\n", + "```\n", + "\n", + "Zu Beginn haben wir gesagt, dass die Variable vom Typ `User` sein soll: `root: User`.\n", + "\n", + "Rechts nach dem `=`-Operator folgt dann aber ein Objekt vom Typ `Admin`. Dies ist zulässig, weil ein `Admin` auch ein `User` ist (\"ist-ein\"-Beziehung), umgekehrt aber nicht zwingend.\n", + "\n", + "Möchten wir herausfinden, ob ein Objekt eine Instanz von einer bestimmten Klasse ist, dann verwenden wir die `isinstance(object, class)`-Funktion:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prüfen, ob Objekt vom Typ `User` ist:\n", + "print( isinstance(user123, User) )\n", + "print( isinstance(pierre, User) )\n", + "print( isinstance(tux, User) )\n", + "print( isinstance(root, User) )\n", + "print( isinstance(chuck_norris, User) )\n", + "\n", + "print(\"\\n\")\n", + "\n", + "# Prüfen, ob User Admin ist:\n", + "print( isinstance(user123, Admin) )\n", + "print( isinstance(pierre, Admin) )\n", + "print( isinstance(tux, Admin) )\n", + "print( isinstance(root, Admin) )\n", + "print( isinstance(chuck_norris, Admin) )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Diese Eigenschaft kann in sich als sehr nützlich herausstellen.\n", + "\n", + "Z.B. wenn wir eine Funktion schreibt, die etwas mit Objekten macht, die entweder vom Typ `User` oder `Admin` sind:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_all_usernames(users: list[User]) -> list[str]:\n", + " usernames = [user.username for user in users]\n", + "\n", + " return usernames\n", + "\n", + "\n", + "get_all_usernames([user123, pierre, tux, root, chuck_norris])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wie du gesehen hast, werden auch Admins in der Liste im Parameter akzeptiert.\n", + "\n", + "Folglich reicht es vollkommen aus, diese Methode 1-mal zu implementieren. Zusätzlich wird sie für alle weiteren Sub-Klassen funktionieren, die in der Zukunft geschrieben wird.\n", + "\n", + "Mit Vererbung können wir in vielen Fällen sehr viel Zeilen Code sparen." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Methoden überschreiben\n", + "Oft möchtest du eine Methode in einer Sub-Klasse ein bisschen abändern. Das kannst du machen, indem du die genau gleiche Methode in der Sub-Klasse neu definierst (hier `get_privileges()`):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from dataclasses import dataclass\n", + "from typing_extensions import override\n", + "\n", + "\n", + "@dataclass\n", + "class User:\n", + " username: str\n", + "\n", + " def get_privileges(self):\n", + " return [\"read\"]\n", + "\n", + "\n", + "class Admin(User):\n", + " @override\n", + " def get_privileges(self):\n", + " return [\"read\", \"write\"]\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wenn du nun `get_privileges()` auf einem `User`-Objekt aufrufst, dann wird die Methode in `User` aufgerufen.\n", + "\n", + "Da du diese Methode in `Admin` überschrieben hast, wird die neue Methode aufgerufen, wenn du die Methode im `Admin`-Objekt aufrufst:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "user123 = User(\"user123\")\n", + "root: User = Admin(\"root\")\n", + "\n", + "print( user123.get_privileges() )\n", + "print( root.get_privileges() )\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Beachte, dass die `@override`-Annotation freiwillig ist. Es ist aber eine Good-Practice, diese Angabe zu machen, damit andere Entwickler:innen sehen, dass die Methode überschrieben wird.\n", + "\n", + "Möchtest du, dass in deiner neuen Methode auch die überschriebene Methode aufgerufen wird, dann kannst du in der neuen Methode den Aufruf mit `super.Methoden-Name(Argumente)` ergänzen. In unserem Beispiel müsste das `super().get_privileges()` sein." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## protected\n", + "\n", + "In der Theorie zu Variablen in Klassen wurden verschiedene Sichtbarkeitstufen vorgestellt (public, protected und private).\n", + "\n", + "Nun stellen wir dir noch die _protected_-Sichtbarkeitsstufe vor. Methodennamen mit der Sichtbarkeitsstufe _protected_ beginnen mit 1 Underscore (`_`):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from dataclasses import dataclass\n", + "\n", + "\n", + "@dataclass\n", + "class User:\n", + " _username: str\n", + "\n", + " def get_username(self):\n", + " return self._username\n", + "\n", + "\n", + "class Admin(User):\n", + " def username_in_capital_letters(self):\n", + " return self._username.upper()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_Protected_ bedeutet in diesem Fall, dass auch die Sub-Klassen (hier `Admin`) die Variable `_username` sehen kann:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root = Admin(\"root\")\n", + "\n", + "print (root.get_username() )\n", + "print (root.username_in_capital_letters() )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Meinung hinter der Sichtbarkeitsstufe _protected_ ist, dass nur die Parent- und Sub-Klasse die Variable `_username` sehen können sollen.\n", + "\n", + "Folglich sollte folgender Code vermieden werden, obwohl er funktioniert:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root._username" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wichtig zu verstehen ist, dass die Sichtbarkeitsstufe _protected_ nicht wirklich eine Python-Funktion ist, sondern, dass sich die Entwickler:innen daran halten sollen, keine _protected_ Felder aufzurufen.\n", + "\n", + "Wenn du also in deinem Code eine Methode oder eine Variable von einem Objekt verwendest, die mit einem Underscore beginnt, dann verletzt du dieses Prinzip. Ausser: du befindest dich in der gleichen Klasse, in welcher die Variable definiert wird, oder in einer Sub-Klasse von ihr." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 0014234b535e06994022e6605ab9e8ca875bb9e6 Mon Sep 17 00:00:00 2001 From: Samuel Grimm Date: Mon, 22 May 2023 18:09:59 +0200 Subject: [PATCH 56/70] theory: requests --- docs/08_web/08_1_get_request.png | Bin 0 -> 293780 bytes docs/08_web/08_1_post_request.png | Bin 0 -> 292476 bytes docs/08_web/08_1_requests.ipynb | 269 ++++++++++++++++++++++++++++++ 3 files changed, 269 insertions(+) create mode 100644 docs/08_web/08_1_get_request.png create mode 100644 docs/08_web/08_1_post_request.png create mode 100644 docs/08_web/08_1_requests.ipynb diff --git a/docs/08_web/08_1_get_request.png b/docs/08_web/08_1_get_request.png new file mode 100644 index 0000000000000000000000000000000000000000..454aac6e0a1c4d1c229d2230e55ca8aaa74507d5 GIT binary patch literal 293780 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