diff --git a/notebooks/seminar08.ipynb b/notebooks/seminar08.ipynb
index 131dd48fec0c275374553b363251ea380b11987f..36bf23c90d4be5a9d5cd460243b9b7d39fdb3a87 100644
--- a/notebooks/seminar08.ipynb
+++ b/notebooks/seminar08.ipynb
@@ -76,15 +76,6 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## 8 Zeichenketten\n",
-    "\n",
-    "Zeichenketten sind anders als ganze Zahlen, Gleitkommazahlen und Boolesche Werte. Eine Zeichenkette ist eine **Folge** (*sequence*), d.h. eine geordnete Menge einzelner Werte. In diesem Kapitel lernen wir, wie wir auf die Zeichen zugreifen können, aus denen eine Zeichenkette besteht und wir lernen einige der Funktionen kennen, die für Zeichenketten bereitgestellt werden.\n",
-    "\n",
-    "![VIM](https://photos.smugmug.com/Weekly-Comic-About-Programmers/i-fkJRphx/1/35afaf94/L/vim-hires-L.png)\n",
-    "\n",
-    "[VIM](https://browserling.smugmug.com/Weekly-Comic-About-Programmers/i-fkJRphx/L), comic.browserling.com\n",
-    "\n",
-    "\n",
     "### 8.1 Eine Zeichenkette ist eine Folge\n",
     "\n",
     "Eine Zeichenkette ist eine Folge von Zeichen. Wir können auf die einzelnen Zeichen mit Hilfe des Klammer-Operators zugreifen:"
@@ -104,7 +95,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Die zweite Anweisung wählt das Zeichen mit Nummer 1 aus der Zeichenkette `fruit` und weist dieses der Variable `letter` zu.\n",
+    "Die zweite Anweisung wählt das Zeichen mit Nummer 1 aus der Zeichenkette `fruit` und weist dieses der Variablen `letter` zu.\n",
     "\n",
     "Der Ausdruck in eckigen Klammern wird **Index** genannt. Der Index gibt an, welches Zeichen der Folge wir haben möchten.\n",
     "\n",
@@ -242,7 +233,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Alternativ können wir einen negativen Index nutzen, der rückwärts vom Ende der Zeichenkette her zählt. Der Ausdruck `fruit[-1]` ergibt das letzte Zeichen, `fruit[-2]` das vorletzte Zeichen, usw.:"
+    "Alternativ können wir einen negativen Index nutzen, der rückwärts vom Ende der Zeichenkette an zählt. Der Ausdruck `fruit[-1]` ergibt das letzte Zeichen, `fruit[-2]` das vorletzte Zeichen, usw.:"
    ]
   },
   {
@@ -303,7 +294,6 @@
    "source": [
     "# Implementieren Sie hier die Funktion streawkceur\n",
     "\n",
-    "\n",
     "# Testaufruf\n",
     "streawkceur(\"streawkceur\")"
    ]
@@ -523,7 +513,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Auf gewisse Weise ist `find` das Inverse des `[]`-Operators. Anstatt einen Index zu nehmen und das entsprechende Zeichen zu extrahieren nimmt es ein Zeichen und findet den Index, an dem dieses Zeichen auftaucht. Wenn das Zeichen nicht gefunden wird, dann gibt die Funktion `-1` zurück.\n",
+    "Auf gewisse Weise ist `find` die Inversion des `[]`-Operators. Anstatt einen Index zu nehmen und das entsprechende Zeichen zu extrahieren, nimmt es ein Zeichen und findet den Index, an dem dieses Zeichen auftaucht. Wenn das Zeichen nicht gefunden wird, gibt die Funktion `-1` zurück.\n",
     "\n",
     "Das ist das erste Mal, dass wir eine `return`-Anweisung innerhalb einer Schleife sehen und sie nicht \"nur\" in einer Verzweigung auftritt! Wenn `word[index] == letter` den boolschen Wert `True` zurückliefert, dann bricht die Funktion die Schleife ab und gibt direkt `index` zurück.\n",
     "\n",
@@ -829,7 +819,7 @@
    "source": [
     "Passen Sie den Wert von `word` an, so dass der obige Code jeweils einen anderen der drei verschiedenen Texte ausgibt.\n",
     "\n",
-    "Python behandelt Groß- und Kleinbuchstaben anders, als wir Menschen es tun würden. Alle Großbuchstaben kommen vor allen Kleinbuchstaben, so dass \n",
+    "Python behandelt Groß- und Kleinbuchstaben anders, als wir Menschen es tun würden. Alle Großbuchstaben kommen vor allen Kleinbuchstaben, sodass \n",
     "\n",
     "`Your word, Pineapple, comes before banana.` \n",
     "\n",
@@ -1177,7 +1167,7 @@
     "            return False\n",
     "    return True\n",
     "\n",
-    "any_lowercase5(\"aaaH\")\n",
+    "any_lowercase5 (\"Hallo\")\n",
     "# Testen Sie hier am besten die Funktionen durch und fügen Sie dann \n",
     "# oben zu jeder Funktion einen Kommentar hinzu, der erklärt, was die\n",
     "# jeweilige Funktion wirklich tut."
@@ -1194,11 +1184,11 @@
     "\n",
     "Hier gibt es keine Lösungsansätze, schauen sie sich die Lösungen von unten an und versuchen Sie nachzuvollziehen wie der tatsächliche Effekt entsteht. Fragen Sie dabei auf jeden Fall nach, wenn Sie etwas nicht verstehen!\n",
     "\n",
-    " - lowercase1 prüft, ob das erste Zeichen der Zeichenkette ein Kleinbuchstaben ist.\n",
-    " - lowercase2 prüft, ob die Zeichenkette `c`ein Kleinbuchstabe ist und gibt immer True - als string, nicht als boolscher Wert - zurück.\n",
-    " - lowercase3 prüft, ob der letzte Buchstabe ein Kleinbuchstabe ist.\n",
-    " - lowercase4 prüft, ob es Kleinbuchstaben gibt, diese Funktion macht das was sie soll.\n",
-    " - lowercase5 prüft, ob die Zeichenkette nur aus Kleinbuchstaben besteht"
+    " - any_lowercase1 prüft ob alle Zeichen Kleinbuchstaben sind.\n",
+    " - any_lowercase2 prüft ob `c`ein Kleinbuchstabe ist und gibt immer true – als Zeichenkette, nicht als boolscher Wert – zurück.\n",
+    " - any_lowercase3 prüft ob der letzte Buchstabe ein Kleinbuchstabe ist.\n",
+    " - any_lowercase4 prüft ob es Kleinbuchstaben gibt, diese Funktion macht das was sie soll.\n",
+    " - any_lowercase5 püft ob der erste Buchstabe ein Kleinbuchstabe ist. "
    ]
   },
   {