diff --git a/python/python.ipynb b/python/python.ipynb index 463dbcfd..2a781668 100644 --- a/python/python.ipynb +++ b/python/python.ipynb @@ -366,6 +366,30 @@ "c < a < b" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kurzaufgaben 1, 2 und 3\n", + "\n", + "1. Definiere die folgenden Variablen mit den angegebenen Werten\n", + "- Variable t , Wert: 0.5\n", + "- Variable h_i, Wert: 10\n", + "- Variable v_i, Wert: 0.75\n", + "- Variable a_i, Wert: -9.81\n", + "\n", + "2. Berechne mit den obigen Werten die Höhe h,\n", + " Geschwindigkeit v und Beschleunigung a\n", + " zum Zeitpunkt t=0.5 eines fallenden Objekts.\n", + " Speichert die Ergebnisse in entsprechenden \n", + " Variablen h, v, a. \n", + "\n", + "3. Prüfe, ob das Objekt bereits über einen Meter gefallen ist.\n", + "\n", + "\n", + "Die Lösungen für die Kurzaufgaben sind am Ende dieser Datei." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -503,6 +527,15 @@ "print(a)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kurzaufgaben 4\n", + "4. Nutze die `print`-Funktion, um die gegebenen Startwerte \n", + "und die Ergebnisse der letzten Kurzaufgabe mit Überschriften zu versehen und auszugeben." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -530,7 +563,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Listen können mit `[]` indiziert werdern" + "Listen können mit `[]` indiziert werden" ] }, { @@ -662,7 +695,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mit `in` wird überprüft ob ein Wert in der Liste ist:" + "Mit `in` wird überprüft, ob ein Wert in der Liste ist:" ] }, { @@ -758,6 +791,24 @@ "tup[1] = 7" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kurzaufgaben 5\n", + "\n", + "5. Definiere eine Liste mit Namen T, die 3 Werte 0.5, 1 und 1.5 enthält\n", + " Definiere drei leere Listen mit den Namen H, V und A\n", + " Berechne für jede der drei Zeiten wie zuvor die Höhe, Geschwindigkeit\n", + " und Strecke, jedoch indem du\n", + " \n", + " a) die Werte aus der Liste T verwendest (T[i] für das entsprechende i)\n", + " b) die Ergebnisse an die zugehörige Liste anhängst\n", + " \n", + " \n", + " Gib die Listen H, V, A mit der `print`-Funktion aus\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -848,6 +899,22 @@ "data" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kurzaufgaben 6 und 7\n", + "\n", + "6. Speichere die zuvor erstellten Listen in einem Dictionary mit dem Namen \n", + "data mit den keys t, h, v und a. \n", + "Gib das Dictionary mit der `print`-Funktion aus. \n", + "\n", + "7. Greife auf die folgenden Werte im Dictionary zu:\n", + "- der zweite Wert von t\n", + "- der erste Wert von v\n", + "- der letzte Wert von h\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1199,7 +1266,7 @@ "\n", "Vorteile:\n", "* Weniger Code\n", - "* Änderungen nur an einer Stelle notwending" + "* Änderungen nur an einer Stelle notwendig" ] }, { @@ -1262,6 +1329,26 @@ "factorial(4)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kurzaufgaben 8 und 9\n", + "\n", + "8. Definiere jeweils eine Funktion für die Berechnung von h, v und a \n", + "zu einem beliebigen Zeitpunkt t \n", + "\n", + "9. Erstelle eine neue Liste T mit den Werte 0.25, 0.5, 0.75, 1.0, 1.25 und 1.5.\n", + "Und erstelle das Dictionary data erneut für alle Zeitpunkte in T.\n", + "Verwende dafür die in 8. erstellten Funktionen.\n", + "\n", + "Zusatz: Du kannst auch die Listen H, V und A neu erstellen und dafür eine \n", + "Schleife verwenden.\n", + "\n", + "Gib data mit der `print`-Funktion aus.\n", + "\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1277,7 +1364,7 @@ "Zahlreiche Module sind Teil jeder Python Installation, die sogenannte \"standard library\":\n", "https://docs.python.org/3/library/\n", "\n", - "Weitere Module hast du in deiner `toolbox` Umgebung mit Mamba installiert." + "Weitere Module hast du in deiner `toolbox` Umgebung mit Mamba installiert." ] }, { @@ -1315,7 +1402,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Den Modulen können mit `as` neue Namen gegeben werden\n", + "Den Modulen können mit `as` neue Namen gegeben werden.\n", "Viele Module haben jedoch Konventionen für den Kurznamen, die du verwenden solltest." ] }, @@ -1461,7 +1548,7 @@ " - `'\\t'` -> Tab\n", " - `'\\\\'` -> normales `'\\'`\n", "\n", - "Wenn viele `'\\'` geschrieben werden müssen (z.B. in LaTeX-Code), lohnt es sich diese Funktion mit dem Prefix `r` auszuschalten:" + "Wenn viele `'\\'` geschrieben werden müssen (z.B. in LaTeX-Code), lohnt es sich diese Funktion mit dem Präfix `r` auszuschalten:" ] }, { @@ -1512,6 +1599,25 @@ "print(rf\"\\qty {{ {energy:.4f} }} {{ \\kilo\\joule }}\")" ] }, + { + "cell_type": "markdown", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "### Kurzaufgaben 10\n", + "Nutze eine Schleife über das Dictionary data, um die Daten in Tabellenform auszugeben.\n", + "\n", + "```\n", + "t 0.25 0.50 0.75 1.00 1.25 1.50\n", + "h 9.88 9.15 7.80 5.84 3.27 0.09\n", + "v -2.27 -4.53 -6.79 -9.06 -11.33 -13.59\n", + "a -9.81 -9.81 -9.81 -9.81 -9.81 -9.81\n", + "```\n", + "Jede Zeile der Tabelle kann dabei durch Verwendung eines f-Strings formatiert werden.\n", + "\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1625,7 +1731,7 @@ "metadata": {}, "source": [ "## Gerade am Anfang beliebt: `IndentationError`: \n", - "Die Fehlermeldung gibt die Zeile an in der Fehler auftritt (hier: `line 8`) \n", + "Die Fehlermeldung gibt die Zeile an, in der der Fehler auftritt (hier: `line 8`) \n", "und den Grund für den Fehler, häufig mit Erklärung (hier: `IndentationError: expected an indented block`)." ] }, @@ -1799,7 +1905,7 @@ "## Komplexer Fehler mit Traceback:\n", "Wenn an einem Fehler mehrere Funktionen beteiligt sind,\n", "gibt die Fehlermeldung einen *Traceback* aus.\n", - "Dieser Fall ist eher die Regel, vorallem, wenn Module verwendet werden.\n", + "Dieser Fall ist eher die Regel, vor allem, wenn Module verwendet werden.\n", "Der *Traceback* zeigt die Reihenfolge aller Funktionsaufrufe, die\n", "am Ende zu dem Fehler geführt haben mit dem letzten Aufruf ganz unten *(most recent call last)*.\n", "\n", @@ -1986,6 +2092,173 @@ "die vorher definiert wurden. Man kann dann interaktiv nach Problemen im Code suchen\n", "oder wie hier herausfinden wie Code funktioniert." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lösungen für die Kurzaufgaben\n", + "\n", + "
\n", + "Lösung zu 1., 2. und 3.\n", + " \n", + "```\n", + "# 1.\n", + "t = 0.5\n", + "h_i = 10\n", + "v_i = 0.75\n", + "a_i = -9.81\n", + "\n", + "# 2.\n", + "h = h_i + v_i * t + 1/2 * a_i * t**2 \n", + "v = v_i * t + a_i * t \n", + "a = a_i\n", + "\n", + "# 3.\n", + "h < 9\n", + "```\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "Lösung zu 4.\n", + " \n", + "```\n", + "# 4.\n", + "print(\"Start...\")\n", + "print(\"...höhe\")\n", + "print(h_i)\n", + "print(\"...geschwindigkeit\")\n", + "print(v_i)\n", + "print(\"...beschleunigung\")\n", + "print(a_i)\n", + "\n", + "print(\"Nach der Zeit t\")\n", + "print(t)\n", + "print(\"Höhe\")\n", + "print(h)\n", + "print(\"Geschwindigkeit\")\n", + "print(v)\n", + "print(\"Beschleunigung\")\n", + "print(a)\n", + "\n", + "```\n", + "
\n", + "\n", + "\n", + "
\n", + "Lösung zu 5.\n", + " \n", + "```\n", + "# 5.\n", + "T = [0.5, 1, 1.5]\n", + "H = []\n", + "V = []\n", + "A = []\n", + "\n", + "\n", + "H.append(h_i + v_i * T[0] + 1/2 * a_i * T[0]**2)\n", + "H.append(h_i + v_i * T[1] + 1/2 * a_i * T[1]**2)\n", + "H.append(h_i + v_i * T[2] + 1/2 * a_i * T[2]**2)\n", + "\n", + "V.append(v_i * T[0] + a_i * T[0])\n", + "V.append(v_i * T[1] + a_i * T[1])\n", + "V.append(v_i * T[2] + a_i * T[2])\n", + "\n", + "A.append(a_i)\n", + "A.append(a_i)\n", + "A.append(a_i)\n", + "\n", + "print(H)\n", + "print(V)\n", + "print(A)\n", + "```\n", + "
\n", + "\n", + "\n", + "
\n", + "Lösung zu 6. und 7.\n", + " \n", + "```\n", + "# 6.\n", + "data = {\"t\":T, \"h\": H, \"v\": V, \"a\":A}\n", + "print(data)\n", + "\n", + "\n", + "# 7.\n", + "print(data[\"t\"][1])\n", + "print(data[\"v\"][0])\n", + "print(data[\"h\"][-1])\n", + "\n", + "```\n", + "
\n", + "\n", + "\n", + "
\n", + "Lösung zu 8. und 9.\n", + " \n", + "```\n", + "# 8.\n", + "def h(t):\n", + " return h_i + v_i * t + 1/2 * a_i * t**2\n", + "\n", + "\n", + "def v(t):\n", + " return v_i * t + a_i * t\n", + "\n", + "\n", + "def a(t):\n", + " return a_i\n", + "\n", + "\n", + "# 9.\n", + "\n", + "T = [0.25, 0.5, 0.75, 1.0, 1.25, 1.5]\n", + "\n", + "# ohne Schleife\n", + "data = {\"t\":T, \"h\": [h(T[0]),h(T[1]),h(T[2]),h(T[3]),h(T[4]),h(T[5])],\n", + " \"v\": [v(T[0]),v(T[1]),v(T[2]),v(T[3]),v(T[4]),v(T[5])],\n", + " \"a\": [a(T[0]),a(T[1]),a(T[2]),a(T[3]),a(T[4]),a(T[5])]}\n", + "\n", + "print(data)\n", + "\n", + "\n", + "# mit Schleife\n", + "H = []\n", + "V = []\n", + "A = []\n", + "\n", + "for t in T:\n", + " H.append(h(t))\n", + " V.append(v(t))\n", + " A.append(a(t))\n", + "\n", + "\n", + "data = {\"t\":T, \"h\": H, \"v\": V, \"a\": A}\n", + "print(data)\n", + "\n", + "```\n", + "
\n", + "\n", + "\n", + "
\n", + "Lösung zu 10.\n", + " \n", + "```\n", + "for k,v in data.items():\n", + " print(f\"{k} {v[0]:.2f} {v[1]:.2f} {v[2]:.2f} {v[3]:.2f} {v[4]:.2f} {v[5]:.2f}\")\n", + "\n", + "# Am Dezimaltrennzeichen ausgerichtet\n", + "\n", + "for k,v in data.items():\n", + " print(f\"{k} {v[0]:6.2f} {v[1]:6.2f} {v[2]:6.2f} {v[3]:6.2f} {v[4]:6.2f} {v[5]:6.2f}\")\n", + "```\n", + "\n", + "
\n" + ] } ], "metadata": { @@ -2005,7 +2278,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.12.5" } }, "nbformat": 4,