From fc105dc1030b36b87cc93649741d131d2e369458 Mon Sep 17 00:00:00 2001 From: Matthias Hoek Date: Thu, 31 Oct 2019 15:37:49 +0100 Subject: [PATCH] Hinweis zu Uni-VPN eingefuegt und ein paar Rechtschreibkorrekturen --- Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb b/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb index 8cf7a36..30bcef5 100644 --- a/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb +++ b/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb @@ -42,7 +42,7 @@ "\n", "### ZDV Jupyter Hub\n", "\n", - "Sie können auch den durch die ZDV angebotenen Jupyter Hub (https://jupyterhub.zdv.uni-mainz.de/hub/login) zur Bearbeitung Ihrer Notebooks verwenden. Hier müssen Sie sich zunächst mit Ihrem Uni-Account anmelden. Danach erscheint eine Auswahlseite, auf der Sie die Art der Jupyter Umgebung auswählen. Für das Praktikum ist die Standardumgebung die richtige Wahl, s. Bild unten.\n", + "Sie können auch den durch die ZDV angebotenen Jupyter Hub (https://jupyterhub.zdv.uni-mainz.de/hub/login) zur Bearbeitung Ihrer Notebooks verwenden. Falls Sie das Jupyterhub von außerhalb des Uni-Netzwerks erreichen wollen, müssen Sie eine VPN-Verbindung zum Uni-Netzwerk aufbauen. Eine Anleitung für die gebräuchlichsten Betriebssysteme finden Sie hier: https://www.zdv.uni-mainz.de/vpn-netz-zugang-von-ausserhalb-des-campus/.Hier müssen Sie sich zunächst mit Ihrem Uni-Account anmelden. Danach erscheint eine Auswahlseite, auf der Sie die Art der Jupyter Umgebung auswählen. Für das Praktikum ist die Standardumgebung die richtige Wahl, s. Bild unten.\n", "\n", "![images/Screenshot_ZDV_JupyterHub.png](attachment:Screenshot_ZDV_JupyterHub.png)\n", "\n", @@ -163,7 +163,7 @@ "source": [ "## Grundlagen zu Python bzw. Jupyter Notebooks:\n", "\n", - "Bevor wir mit dem eigentlichen programmieren beginnen wollen müssen wir uns jedoch erst einmal mit unserem so genannten Interpreter (**Jupyter Notebook**) vertraut machen. Bei der Programmiersprache **Python** handelt es sich um eine so genannte **Interpretersprache**. Dies bedeutet, dass eingegebene Befehle, ähnlich wie bei einem Taschenrechner, direkt ausgeführt werden.\n", + "Bevor wir mit dem eigentlichen Programmieren beginnen wollen, müssen wir uns jedoch erst einmal mit unserem so genannten Interpreter (**Jupyter Notebook**) vertraut machen. Bei der Programmiersprache **Python** handelt es sich um eine so genannte **Interpretersprache**. Dies bedeutet, dass eingegebene Befehle, ähnlich wie bei einem Taschenrechner, direkt ausgeführt werden.\n", "\n" ] }, @@ -180,33 +180,33 @@ " \n", "#### Aufgabe 1.: Zum Vertraut werden mit dem Jupyter Notebook\n", "\n", - "Im folgenden wollen wir erst einmal mit den Grundlagen des Notebooks vertraut machen. Insbesondere wollen wir lernen wie wir eine Markdown- und eine Code-Zelle erstellen, bearbeiten und Ausführen. \n", + "Im folgenden wollen wir erst einmal mit den Grundlagen des Notebooks vertraut machen. Insbesondere wollen wir lernen, wie wir eine Markdown- und eine Code-Zelle erstellen, bearbeiten und ausführen. \n", "\n", - "* Erstellt zunächst eine Code-Zelle unterhalb dieser und berechnet die Summe zweier beliebiger Ganzen Zahlen. Geht dabei wie folgt vor:\n", - " 1. Klickt die Zelle dieser Aufgabe an so, dass sie eine blaue Umrandung bekommt (je nach Bildschirmauflösung könnt ihr nur links einen blauen Balken erkennen). Ihr befindet euch nun im so genannten \"Command Modus\". In diesem Modus könnt ihr mit den Pfeiltasten eurer Tastatur durch das Notebook navigieren, oder die Struktur des Notebooks bzw. seiner Zellen mit Hilfe von Tasten/Tastenkombinationen modifizieren.\n", - " 2. Benutzt nun die Taste **B** um eine Code-Zelle unterhalb (**B**elow) dieser Zelle zu erstellen. Ihr werdet Feststellen das eurer Navigator direkt zu der neu erstellten Zelle springt (blaue Umrandung).\n", + "* Erstellt zunächst eine Code-Zelle unterhalb dieser und berechnet die Summe zweier beliebiger ganzer Zahlen. Geht dabei wie folgt vor:\n", + " 1. Klickt die Zelle dieser Aufgabe an, so dass sie eine blaue Umrandung bekommt (je nach Bildschirmauflösung könnt ihr nur links einen blauen Balken erkennen). Ihr befindet euch nun im so genannten \"Command Modus\". In diesem Modus könnt ihr mit den Pfeiltasten eurer Tastatur durch das Notebook navigieren oder die Struktur des Notebooks bzw. seiner Zellen mit Hilfe von Tasten/Tastenkombinationen modifizieren.\n", + " 2. Benutzt nun die Taste **B** um eine Code-Zelle unterhalb (**B**elow) dieser Zelle zu erstellen. Ihr werdet feststellen, das euer Navigator direkt zu der neu erstellten Zelle springt (blaue Umrandung).\n", " 3. Um nun diese neu erstellte Code-Zelle zu editieren, klickt ihr diese mit dem Mauszeiger an. Eure Zellenumrandung sollte von Blau auf Grün wechseln. Dies zeigt an, dass ihr euch nun im Editiermodus für diese Zelle befindet.\n", - " 4. Nun könnt ihr die Summe aus zwei beliebige Ganzen Zahlen mit Hilfe des Syntaxes\n", + " 4. Nun könnt ihr die Summe aus zwei beliebigen ganzen Zahlen mit Hilfe der Syntax\n", " ```python\n", " 3 + 5\n", " ```\n", " berechnen.\n", - " 5. Um diese Code-Zelle auszuführen müsst ihr anschließend die Tastenkombination: **STRG + ENTER** oder **SHIFT + ENTER** benutzen.\n", + " 5. Um diese Code-Zelle auszuführen, müsst ihr anschließend die Tastenkombination: **STRG + ENTER** oder **SHIFT + ENTER** benutzen.\n", " \n", " \n", - "* Erstellt nun eine Markdown-Zelle überhalt eurer Code-Zelle. Geht dabei wie folgt vor: \n", + "* Erstellt nun eine Markdown-Zelle oberhalb eurer Code-Zelle. Geht dabei wie folgt vor: \n", " 1. Klickt eure zuvor erstellte Code-Zelle an. Sie sollte eine grüne Umrandung anzeigen, da ihr euch hier nach wie vor im Editiermodus befindet.\n", - " 2. Drückt die **ESC**-Taste um vom Editier- in den Command-Modus zu wechseln (blaue Umrandung.)\n", - " 3. Drückt nun die Taste **A** um eine neue Code-Zelle überhalb (**A**bove) eurer angewählten Zelle zu erstellen. Eurer Navigator wird wieder automatisch zu der neu erstellten Zelle springen.\n", + " 2. Drückt die **ESC**-Taste um vom Editier- in den Command-Modus zu wechseln (blaue Umrandung).\n", + " 3. Drückt nun die Taste **A** um eine neue Code-Zelle oberhalb (**A**bove) eurer angewählten Zelle zu erstellen. Euer Navigator wird wieder automatisch zu der neu erstellten Zelle springen.\n", " 4. Drückt nun die Taste **M** um die Code-Zelle in eine Markdown-Zelle zu verwandeln. Ihr werdet feststellen, dass eine Markdown-Zelle im Vergleich zu einer Code Zelle kein \"In []:\" auf der linken Seite stehen hat. \n", " 5. Wechselt nun in der Markdown-Zelle in den Editiermodus (grüne Umrandung) in dem ihr sie anklickt. \n", - " 6. Fügt nun die folgenden Dinge in die Markdown-Zelle mit dem entsprechenden Syntax ein:\n", - " * Eine level 1 und level 2 Überschift\n", + " 6. Fügt nun die folgenden Dinge in die Markdown-Zelle mit der entsprechenden Syntax ein:\n", + " * Eine level 1 und level 2 Überschrift\n", " * Eine numerische Aufzählung (1. 2. und 3.) wobei 1. ein fett gedrucktes Wort 2. ein kursive geschriebenes Wort und 3. ein Wort im true type beinhalten soll. \n", " * Fügt dem zweiten Aufzählungspunkt (2.) drei nicht nummerierte Unterpunkte hinzu.\n", " \n", "**Hinweise:**\n", - "Um die Aufgabe mit der Markdown-Zelle zu lösen, könnt ihr den benötigten Syntax in der Zelle überhalb dieser Aufgabe nach gucken. Wechselt hierzu in der entsprechenden Markdown-Zelle in den Editiermodus in dem ihr sie mit einem Doppelklick anwählt. \n", + "Um die Aufgabe mit der Markdown-Zelle zu lösen, könnt ihr die benötigte Syntax in der Zelle oberhalb dieser Aufgabe nach gucken. Wechselt hierzu in der entsprechenden Markdown-Zelle in den Editiermodus in dem ihr sie mit einem Doppelklick anwählt. \n", "
" ] }, @@ -214,7 +214,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Neben diesen nützlichen Befehlemm gibt es noch weitere tolle Kürzel wie zum Beispiel:\n", + "Neben diesen nützlichen Befehlen gibt es noch weitere tolle Kürzel wie zum Beispiel:\n", "* **D + D** um eine Zelle zu **löschen** \n", "* **Y** verwandelt eine aktuelle **Markdown**-Zelle in eine **Code**-Zelle\n", "* **Strg** + **Shift** + **Minus** Splittet eine Zelle an der Position eures Cursors \n", @@ -230,7 +230,7 @@ "source": [ "## Python als Taschenrechner:\n", "\n", - "Neben dem einfachen summieren zweier Zahlen ermöglicht uns Python natürlich auch das verwendet weiterer Operatoren. Hierbei haben die Operatoren ähnlich wie in der Mathematik gewisse Prioritäten (*Punkt vor Strich*). Die Operation mit dem niedrigeren Prioritätswert wird zu erst ausgeführt. \n", + "Neben dem einfachen Summieren zweier Zahlen ermöglicht uns Python natürlich auch das Verwenden weiterer Operatoren. Hierbei haben die Operatoren, ähnlich wie in der Mathematik, gewisse Prioritäten (*Punkt vor Strich*). Die Operation mit dem niedrigeren Prioritätswert wird zu erst ausgeführt. \n", "\n", "\n", "\n", @@ -357,7 +357,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Um unsere Rechnungen besser zu Strukturieren können wir Zahlen auch Variablen zu ordnen. Hierzu verwenden wir das Gleichheitszeichen um einer Variablen (*links*) einem Wert (*rechts*) zu zuordnen." + "Um unsere Rechnungen besser zu strukturieren, können wir Zahlen auch Variablen zuordnen. Hierzu verwenden wir das Gleichheitszeichen um einer Variablen (*links*) einem Wert (*rechts*) zuzuordnen." ] }, { @@ -494,7 +494,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ein weiterer Vorteil (bzw. auch Nachteil) ist, dass Python eine so genannte *dynamische* Datentypenvergabe nutzt. Um besser zu verstehen was dies bedeutet gucken wir uns das Nachfolgende Beispiel an. " + "Ein weiterer Vorteil (bzw. auch Nachteil) ist, dass Python eine so genannte *dynamische* Datentypenvergabe nutzt. Um besser zu verstehen was dies bedeutet, gucken wir uns das nachfolgende Beispiel an. " ] }, { @@ -535,11 +535,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In der oberen Zelle ist **c** vom Datentyp `int` (*Integer*) was einer Ganzen Zahl entspricht. In der unteren Zelle jedoch ist **c** vom Datentype `float` (*Floating Point Number*) also eine Gleitkommazahl. Dies liegt daran das wir in der unteren Zelle **b** als Gleitkommazahl definiert haben. Um uns Arbeit abzunehmen hat Python für uns im Hintergrund dynamisch entschieden, dass somit **c** ebenfalls vom type `float` sein muss. \n", + "In der oberen Zelle ist **c** vom Datentyp `int` (*Integer*) was einer Ganzen Zahl entspricht. In der unteren Zelle jedoch ist **c** vom Datentyp `float` (*Floating Point Number*) also eine Gleitkommazahl. Dies liegt daran, das wir in der unteren Zelle **b** als Gleitkommazahl definiert haben. Um uns Arbeit abzunehmen hat Python für uns im Hintergrund dynamisch entschieden, dass somit **c** ebenfalls vom Typ `float` sein muss. \n", "\n", "Neben den primitiven Datentypen `float` und `int` gibt es noch die wichtigen Datentypen `str` (*string*) was einer Zeichenkette entspricht (z.B. Buchstaben, Wörter und Sätze), `complex` für Komplexe Zahlen und `bool` für Wahrheitswerte. Was genau Wahrheitswerte sind und für was diese verwendet werden, werdet ihr noch im **PGP2** lernen. \n", "\n", - "Für das **PGP1** sind erstmal nur die typen `int`, `float` und `str` von Bedeutung." + "Für das **PGP1** sind erstmal nur die Typen `int`, `float` und `str` von Bedeutung." ] }, { @@ -555,24 +555,24 @@ " \n", "#### Aufgabe 2.a.: Beschleunigte Bewegung\n", "\n", - "Die zurückgelegte Distanz eines Objekts welches eine beschleunigte Bewegung ausführt (z.B. der freie Fall einer Kugel in einem Gravitationsfeld), kann mit Hilfe von \n", + "Die zurückgelegte Distanz eines Objekts, welches eine beschleunigte Bewegung ausführt (z.B. der freie Fall einer Kugel in einem Gravitationsfeld), kann mit Hilfe von \n", "\n", "$s(t) = \\frac{1}{2}\\cdot a \\cdot t^2 + v_0 \\cdot t + s_0$\n", "\n", "beschrieben werden. Hierbei beschreibt $t$ die verstrichene Zeit, $a$ die Beschleunigung, $v_0$ die Startgeschwindigkeit und $s_0$ die Startposition des Objekts. Verwende Variablen um die folgenden Werte zu berechnen:\n", "\n", - "Wie lange bräuchte ein Stift welcher in einer Höhe von $s_0 = 1.2\\,$m losgelassen wird ($v_0 = 0\\,\\text{m}/\\text{s}$)... \n", + "Wie lange bräuchte ein Stift, welcher in einer Höhe von $s_0 = 1.2\\,$m losgelassen wird ($v_0 = 0\\,\\text{m}/\\text{s}$)... \n", "\n", "* ... im Schwerefeld der Erde $(g_\\text{E} = - 9.81\\,\\text{m}/\\text{s}^2)$ ...\n", "* ... im Schwerefeld des Mondes $(g_\\text{M} = - 1.62\\,\\text{m}/\\text{s}^2)$ ...\n", "* ... im Schwerefeld der Sonne $(g_\\text{S} = - 274\\,\\text{m}/\\text{s}^2)$ ...\n", "\n", - "... bis sie auf dem Boden aufschlägt? (Reibungseffekt sind zu vernachlässigen)\n", + "... bis er auf dem Boden aufschlägt? (Reibungseffekt sind zu vernachlässigen)\n", "\n", "Mit welcher Geschwindigkeit (in km/h) schlägt der Stift auf die Sonnenoberfläche auf ?\n", "\n", "**Hinweis:** \n", - "Sofern ihr alle Berechnungen innerhalb einer Zelle ausführen wollt könnt ihr mit Hilfe der `print`-Funktion eure Ergebnisse \"ausdrucken\"/anzeigen lassen. Geht dabei wie folgt vor:\n", + "Sofern ihr alle Berechnungen innerhalb einer Zelle ausführen wollt, könnt ihr mit Hilfe der `print`-Funktion eure Ergebnisse \"ausdrucken\"/anzeigen lassen. Geht dabei wie folgt vor:\n", "```python\n", "print(Variablennamen1, Variablennamen2, Variablennamen3 ...)\n", "```\n", @@ -590,9 +590,9 @@ "source": [ "## Zeichenketten\n", "\n", - "Wie eben bereits erwähnt gibt es neben den Zahlen Datentypen `int`, `float` und `complex` auch noch den Datentyp einer Zeichenkette `str`. Zeichenketten werden in Programmiersprachen vielseitig verwendet z.B. bei einer Nutzereingabe (wie dem Passwort), Dateiname bei einer Installation, oder bei Textrückgaben von Programmen. Letzteres haben wir bereits in Aufgabe 2 mit Hilfe der `print`-Funktion gesehen.\n", + "Wie eben bereits erwähnt, gibt es neben den Zahlen-Datentypen `int`, `float` und `complex` auch noch den Datentyp einer Zeichenkette `str`. Zeichenketten werden in Programmiersprachen vielseitig verwendet z.B. bei einer Nutzereingabe (wie dem Passwort), Dateiname bei einer Installation, oder bei Textrückgaben von Programmen. Letzteres haben wir bereits in Aufgabe 2 mit Hilfe der `print`-Funktion gesehen.\n", "\n", - "Für das PGP-1 wollen wir uns zunächst darauf beschränken, dass Zeichenketten in so genannten **Formatstrings** dazu genutzt werden können schönere `print` Rückgaben zu erzeugen bzw. wir mit Zeichnketten Achsenbeschriftungen an Graphen anbringen können. \n", + "Für das PGP-1 wollen wir uns zunächst darauf beschränken, dass Zeichenketten in so genannten **Formatstrings** dazu genutzt werden können, schönere `print` Rückgaben zu erzeugen bzw. wir mit Zeichenketten Achsenbeschriftungen an Graphen anbringen können. \n", "\n", "Zunächst erst aber einmal eine einfache Zeichenkette:" ] @@ -692,7 +692,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "... oder sofern ihr eine Rückgabe lieber über mehrere Zeilen ausgeben lassen wollt könnt ihr dieswie folgt machen:" + "... oder sofern ihr eine Rückgabe lieber über mehrere Zeilen ausgeben lassen wollt, könnt ihr dies wie folgt machen:" ] }, { @@ -728,7 +728,7 @@ " \n", "#### Aufgabe 2.b.: Beschleunigte Bewegung Zusatz\n", " \n", - "Lasst euch eure berechneten Werte aus Aufgabe 2 mit Hilfe von `print` erneut ausgeben. Nutzt jedoch diese Mal **Formatstrings** für eine schönere und bedeutungsvollere Rückgabe. Achtet dabei besonders auf:\n", + "Lasst euch eure berechneten Werte aus Aufgabe 2 mit Hilfe von `print` erneut ausgeben. Nutzt jedoch dieses Mal **Formatstrings** für eine schönere und bedeutungsvollere Rückgabe. Achtet dabei besonders auf:\n", "\n", "* Die Angabe der richtigen Einheiten\n", "* Das Runden der berechneten Werte der Anzahl an signifikanten Stellen entsprechend " @@ -738,13 +738,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Das definieren von Funktionen:\n", + "## Das Definieren von Funktionen:\n", "\n", - "Anstatt Berechnungen wie bei einem Taschenrechner immer wieder manuell einzugeben, ermöglicht uns eine Programmiersprache das definieren von Funktionen. Funktionen können hierbei ähnlich wie mathematische Funktionen definiert und behandelt werden. Im folgenden wollen wir uns dies im Fall des Ohmschen Gesetzt welches durch \n", + "Anstatt Berechnungen wie bei einem Taschenrechner immer wieder manuell einzugeben, ermöglicht uns eine Programmiersprache das Definieren von Funktionen. Funktionen können hierbei ähnlich wie mathematische Funktionen definiert und behandelt werden. Im folgenden wollen wir uns dies im Fall des Ohmschen Gesetzes, welches durch \n", "\n", "$U(R, I) = R \\cdot I$ \n", "\n", - "beschrieben wird angucken. Hierbei wird die Spannung $U$ durch die Variablen $R$ und $I$ beschrieben. Dies gilt auch analog für Funktionen in einer Programmiersprache:" + "beschrieben wird, angucken. Hierbei wird die Spannung $U$ durch die Variablen $R$ und $I$ beschrieben. Dies gilt auch analog für Funktionen in einer Programmiersprache:" ] }, { @@ -803,15 +803,15 @@ "source": [ "
\n", " \n", - "#### Aufgabe 3. Umgang mit dem Ohmschen Gesetzt:\n", + "#### Aufgabe 3. Umgang mit dem Ohmschen Gesetz:\n", "\n", - "Bei einem $500\\,\\Omega$ Widerstand wird eine Spannung von 5, 10, 20 und 50 Volt angelegt, wie hoch sollte der jeweils entsprechende Strom ausfallen und welche Leistung wird in dem Widerstand umgesetzt ? \n", + "Bei einem $500\\,\\Omega$ Widerstand wird eine Spannung von 5, 10, 20 und 50 Volt angelegt. Wie hoch sollte der jeweils entsprechende Strom ausfallen und welche Leistung wird in dem Widerstand umgesetzt? \n", "\n", - "Des Weiteren nehmt an, dass euer Widerstand einen Fehler von $+/-20\\,\\Omega$ und eure angelegte Spannung eine Ungenauigkeit von $10\\,\\%$ aufweist. Wie groß wäre der Fehler des gemessen Stroms bei der Messung mit $50\\,$V? Benutzt hierfür die Gaus'sche Fehlerfortpflanzung und definiert die entsprechende Funktion in Python.\n", + "Des Weiteren nehmt an, dass euer Widerstand einen Fehler von $+/-20\\,\\Omega$ und eure angelegte Spannung eine Ungenauigkeit von $10\\,\\%$ aufweist. Wie groß wäre der Fehler des gemessenen Stroms bei der Messung mit $50\\,$V? Benutzt hierfür die Gaus'sche Fehlerfortpflanzung und definiert die entsprechende Funktion in Python.\n", "\n", "**Tipp:**\n", "\n", - "Die Leistung welche in einem ohmschen Widerstand umgesetzt wird lässt durch\n", + "Die Leistung, welche in einem ohmschen Widerstand umgesetzt wird, lässt sich durch\n", "\n", "$P(U, I ) = U \\cdot I $\n", "\n", @@ -824,7 +824,7 @@ "metadata": {}, "source": [ "### Tipp: \n", - "Es ist ratsam gleich von Anfang an Funktionen zu dokumentieren. Hierzu wird in Python der sogenannte `Doc-Strings`. Sie beinhalten Informationen über die Funktion selbst ihre Verwendeten Parameter und ihrer Ausgabe. Zum Beispiel für unser Beispiel des Ohmschen Gesetzt:" + "Es ist ratsam gleich von Anfang an Funktionen zu dokumentieren. Hierzu dienen in Python die sogenannten `Doc-Strings`. Sie beinhalten Informationen über die Funktion selbst, ihre verwendeten Parameter und ihrer Ausgabe. Zum Beispiel für unser Beispiel des Ohmschen Gesetzes:" ] }, { @@ -861,7 +861,7 @@ "source": [ "## Messtabellen in Python:\n", "\n", - "Damit euch eine Programmiersprache wie Python Arbeit abnehmen kann, sollte es natürlich auch möglich sein größere Datenmengen z.b. die Werte einer Messtabelle in einer Variablen zu speichern. Python bietet hierfür mehrer verschiedene Konzepte alle mit unterschiedlichen Stärken und Schwächen. Die gängigsten Methoden sind listen, tuple, bzw. so genannte numpy.arrays und pandas.dataframes. Aufgrund der imitierten Zeit im PGP 1 werden wir uns hier lediglich mit zwei dieser vier Methoden auseinander setzen. \n", + "Damit euch eine Programmiersprache wie Python Arbeit abnehmen kann, sollte es natürlich auch möglich sein, größere Datenmengen, z.B. die Werte einer Messtabelle, in einer Variablen zu speichern. Python bietet hierfür mehrer verschiedene Konzepte an, alle mit unterschiedlichen Stärken und Schwächen. Die gängigsten Methoden sind listen, tuple, bzw. sogenannte numpy.arrays und pandas.dataframes. Aufgrund der limitierten Zeit im PGP 1 werden wir uns hier lediglich mit zwei dieser vier Methoden auseinander setzen. \n", "\n", "Fangen wir zunächst mit Listen an. Eine Liste ist eine Ansammlung von Werten, welche alle den gleichen oder ganz unterschiedliche Datentypen haben können. Eine Liste kann auf zwei unterschiedliche Art und Weisen erstellt werden:" ] @@ -900,7 +900,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sobald wir eine liste erstellt haben können wir eine ganze Reihe von unterschiedlichen Manipulationen durchführen um sie nach unserem belieben zu verändern.\n", + "Sobald wir eine liste erstellt haben, können wir eine ganze Reihe von unterschiedlichen Manipulationen durchführen um sie nach unserem Belieben zu verändern.\n", "\n", "Wir können zum Beispiel die bestehende Liste um ein Wert erweitern (`append`) oder einen zusätzlichen Wert an eine beliebige Stelle in der Liste hinzufügen (`insert`)." ] @@ -941,7 +941,7 @@ "source": [ "Ups, was ist denn in der letzten Zelle passiert? Wert4 wurde ja garnicht an Stelle 4 der Liste gesetzt, Python scheint nicht zählen zu können... \n", "\n", - "Leider zählt Python doch richtig. In Python läuft der index von objekten in einer Liste oder ähnlichem immer von 0,1,2,3...n. Dies können wir auch ganz einfach überprüfen in dem wir unsere Liste in verschiedene \"Scheiben\" schneiden (so genanntes slicing). Dies geht wie folgt:" + "Leider zählt Python doch richtig. In Python läuft der Index von Objekten in einer Liste oder ähnlichem immer von 0,1,2,3...n. Dies können wir auch ganz einfach überprüfen in dem wir unsere Liste in verschiedene \"Scheiben\" schneiden (so genanntes slicing). Dies geht wie folgt:" ] }, { @@ -962,7 +962,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die kleinste Scheibe welche wir abschneiden können ist ein einzelner Wert:" + "Die kleinste Scheibe, welche wir abschneiden können, ist ein einzelner Wert:" ] }, { @@ -1109,7 +1109,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Aber aufgepasst bei `append` wird eure Liste an welche ihr die Daten anhängt (hier Messwerte1) direkt geändert (dies gilt auch für `insert`), während ihr beim `+` Operator die Variable überschreiben müsst damit die Änderung wirksam wird. " + "Aber aufgepasst bei `append` wird eure Liste, an welche ihr die Daten anhängt (hier Messwerte1), direkt geändert (dies gilt auch für `insert`), während ihr beim `+` Operator die Variable überschreiben müsst, damit die Änderung wirksam wird. " ] }, { @@ -1133,7 +1133,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zwei weitere nützliche Befehle im zusammenhang von listen ist die `len`- und `range`-Funktion. \n", + "Zwei weitere nützliche Befehle im Zusammenhang von Listen ist die `len`- und `range`-Funktion. \n", "\n", "`len` gibt euch die Länge einer Liste zurück " ] @@ -1211,9 +1211,9 @@ " \n", "#### Aufgabe 4.a.: Erstellen von Messwerttabellen:\n", "\n", - "Erstelle für jede Spalte (außer der Messwertnummer) der nachfolgende Messtabelle eine Liste welche die Messdaten beinhaltet. Benutze anschließend den `append` Befehl um deine Spaltendaten an eine weitere Liste namens *daten* anzuhängen. \n", + "Erstelle für jede Spalte (außer der Messwertnummer) der nachfolgende Messtabelle eine Liste, welche die Messdaten beinhaltet. Benutze anschließend den `append` Befehl um deine Spaltendaten an eine weitere Liste namens *daten* anzuhängen. \n", "\n", - "| Messwertnummer | Spannung [V] | Strom [mA] | Fehler der Spannung [V] | Fehler des Stroms in [mA] |\n", + "| Messwertnummer | Spannung [V] | Strom [mA] | Fehler der Spannung [V] | Fehler des Stroms [mA] |\n", "|----------------|--------------|------------|-------------------------|---------------------------|\n", "| 1 | 12.00 | 110 | 0.32 | 10 |\n", "| 2 | 11.78 | 98 | 0.15 | 10 |\n", @@ -1228,7 +1228,7 @@ "**Tipp:**\n", "\n", "1. Ihr habt bereits die Funktionen für die Leistung in Aufgabe 3 definiert und könnt sie hier erneut verwenden. \n", - "2. Das Sclicen von verschachtelten Listen funktioniert genauso wie bei normalen Listen: \n", + "2. Das Slicen von verschachtelten Listen funktioniert genauso wie bei normalen Listen: \n", "\n", "```python\n", "spalte0 = daten[0] #<-- Wählt die Spalte 0 an \n",