diff --git a/notebooks/seminar03.ipynb b/notebooks/seminar03.ipynb
index 4f3330f5ada741c6d1dc748b4c1e4d68cbf6d067..c82307eda92a853e0ed01257c51e68e54e9b2ad2 100644
--- a/notebooks/seminar03.ipynb
+++ b/notebooks/seminar03.ipynb
@@ -56,8 +56,8 @@
     "Hier einige Beispiele: \n",
     "\n",
     "- **Lesbarkeit** - Mit einer Funktion können wir eine Gruppe von Anweisungen benennen und so beschreiben was die Gruppe macht.\n",
-    "- **Fehlersuche** - Lange Programme in Funktionen aufzuteilen ermöglicht es, das Programm funktionsweise zu debuggen und später zusammen zu setzten.\n",
-    "- **Testbarkeit** - Analog zur Fehlersuche kann jede Funktion einzeln getestet werden\n",
+    "- **Fehlersuche** - Lange Programme in Funktionen aufzuteilen ermöglicht es, das Programm funktionsweise zu debuggen und später zusammen zu setzen.\n",
+    "- **Testbarkeit** - Analog zur Fehlersuche kann jede Funktion einzeln getestet werden.\n",
     "- **kürzerer Programmcode** - Durch Funktionen können Wiederholungen im Quellcode reduziert oder eliminiert werden.\n",
     "- **Wartbarkeit** - Dadurch, dass sich Quellcode nicht (bzw. kaum) wiederholt, können Änderungen an nur einer Stelle vorgenommen werden und die Effekte sind im gesamten Programm zu sehen.\n",
     "- **Wiederverwendbarkeit** - Eine gut funktionierende Funktion kann in vielen Programmen sinnvoll verwendet werden."
@@ -115,7 +115,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Mit Hilfe der `int`-Funktion können wir auch zum Beispiel Gleitkommazahlen in ganze Zahlen umwandeln. Allerdings wird dabei der Teil hinter dem Dezimalpunkt abgeschnitten und nicht gerundet:"
+    "Mit Hilfe der `int`-Funktion können wir zum Beispiel Gleitkommazahlen in ganze Zahlen umwandeln. Allerdings wird dabei der Teil hinter dem Dezimalpunkt abgeschnitten und nicht gerundet:"
    ]
   },
   {
@@ -181,7 +181,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Anfangs hatten Sie Gänsefüßchen als \"Markierung\" für Zeichenketten kennengelernt. In Python ist es auch möglich Zeichenketten mit 'einfachen Hochkommata' einzuschließen. Das ermöglicht uns z.B. Sätze mit wörtlicher Rede darzustellen, so zum Beispiel der Satz: 'Da sagte er: \"Heute wird es regnen\" und ging ab.'; umgekehrt können wir mit Gänsefüßchen Sätze wie \"Das wär's gewesen.\" einschließen. \n",
+    "Anfangs hatten Sie Gänsefüßchen als \"Markierung\" für Zeichenketten kennengelernt. In Python ist es auch möglich Zeichenketten mit 'einfachen Hochkommata' einzuschließen. Das ermöglicht uns z.B. Sätze mit wörtlicher Rede darzustellen, so zum Beispiel den Satz: 'Da sagte er: \"Heute wird es regnen\" und ging ab.'; umgekehrt können wir mit Gänsefüßchen Sätze wie \"Das wär's gewesen.\" einschließen. \n",
     "Probieren Sie beides aus, indem Sie die beiden Sätze jeweils einer Variablen zuweisen und dann mit der `print`-Anweisung ausgeben:"
    ]
   },
@@ -601,7 +601,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Die Regeln zur Verknüpfung gelten auch hier; Anstelle eines Wertes können wir einen Ausdruck übergeben:\n"
+    "Die Regeln zur Verknüpfung gelten auch hier; anstelle eines Wertes können wir einen Ausdruck übergeben:\n"
    ]
   },
   {
@@ -618,7 +618,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Das Argument wird ausgewertet (also berechnet) bevor die Funktion aufgerufen wird. Daher werden die Ausdrücke `'Film' * 2` und `math.cos(math.pi))` nur einfach ausgewertet. \n",
+    "Das Argument wird ausgewertet (also berechnet) bevor die Funktion aufgerufen wird. Daher werden die Ausdrücke `'Film' * 2` und `math.cos(math.pi))` nur einmal ausgewertet. \n",
     "\n",
     "Wir können auch eine Variable als Argument übergeben:"
    ]
@@ -831,7 +831,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Aber wenn wir sonst nichts damit machen, geht der Wert verloren. Wir berechnen also etwas und fangen damit nichts weiter an. \n",
+    "Aber wenn wir sonst nichts damit machen, geht der Wert verloren. Wir berechnen also etwas und fangen damit nichts weiter an. Daher weisen wir den Rückgabewert einer Funktion meist einer Variablen zu oder verwenden ihn in einem Ausdruck, wie oben gesehen.\n",
     "Schreiben Sie einen Ausdruck auf, der die Funktion `math.sqrt` verwendet und weisen Sie das Ergebnis einer Variablen zu:"
    ]
   },
@@ -882,7 +882,7 @@
     "\n",
     "### 3.11 Exkurs: Eigene Funktionen mit Rückgabewert\n",
     "\n",
-    "Dieser Abschnitt taucht nicht im englischen Python-Kurs auf und gibt einen Ausbilck auf ein späteres Kapitel. Wir können selbst eine Funktion mit Rückgabewert schreiben, indem wir das Schlüsselwort `return` verwenden:\n"
+    "Dieser Abschnitt taucht nicht im englischen Python-Kurs auf und gibt einen Ausblick auf ein späteres Kapitel. Wir können selbst eine Funktion mit Rückgabewert schreiben, indem wir das Schlüsselwort `return` verwenden:\n"
    ]
   },
   {
@@ -1212,10 +1212,10 @@
     "![Spoiler Alert](https://imgs.xkcd.com/comics/spoiler_alert.png)\n",
     "([Spoiler Alert](https://xkcd.com/109/), Randall Munroe)\n",
     "\n",
-    "1. Die Aufgabe ist Aufgabe 1a sehr ähnlich, schreiben sie den Kopf auf. Die folgenden Hinweise zeigen den Unterschied zu `right_justify`\n",
+    "1. Diese Aufgabe ist Aufgabe 1a sehr ähnlich, schreiben sie den Kopf auf. Die folgenden Hinweise zeigen den Unterschied zu `right_justify`\n",
     "2. Wie viele Leerzeichen benötigen Sie insgesamt? Wie können Sie das berechnen?\n",
-    "3. Diesmal stehen die Leerzeichen auf beiden Seiten des Texts, wie viele Leerzeichen kommen vor, wie viele hinter den String?\n",
-    "4. Verknüpfen Sie die Leerzeichen und das Argument und geben sie es mit `print` aus."
+    "3. Diesmal stehen die Leerzeichen auf beiden Seiten des Texts. Wie viele Leerzeichen benötigen Sie vor, wie viele hinter der Zeichenkette?\n",
+    "4. Verknüpfen Sie die Leerzeichen und das Argument und geben Sie es mit `print` aus."
    ]
   },
   {