From 246488ffdd2ce172a7a632c355eb291e92b74346 Mon Sep 17 00:00:00 2001
From: Michel Schwab <michel.schwab@hu-berlin.de>
Date: Wed, 9 Jan 2019 13:09:52 +0100
Subject: [PATCH] seminar09 und hausaufgabe4 angepasst

---
 notebooks/hausaufgabe4.ipynb | 72 ++++++++++++++++++++++++++++++++++--
 notebooks/seminar09.ipynb    | 66 ++++++---------------------------
 2 files changed, 81 insertions(+), 57 deletions(-)

diff --git a/notebooks/hausaufgabe4.ipynb b/notebooks/hausaufgabe4.ipynb
index 1db1033..088b66b 100644
--- a/notebooks/hausaufgabe4.ipynb
+++ b/notebooks/hausaufgabe4.ipynb
@@ -6,7 +6,16 @@
    "source": [
     "# 4. Hausaufgabe\n",
     "\n",
-    "Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (`hausaufgabe4.ipynb`) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode und Markdown-Textboxen im Jupyter-Notebook ([Syntax-Beispiele](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele)) um ihr Programm zu kommentieren. Für diese Hausaufgabe sollten Sie alles bis zum 7. Kapitel durchgearbeitet haben, da Iteration, Rekursion, Verzweigungen und Funktionen mit Rückgabewert benötigt werden.\n",
+    "Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (`hausaufgabe4.ipynb`) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode und Markdown-Textboxen im Jupyter-Notebook ([Syntax-Beispiele](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele)) um ihr Programm zu kommentieren. Für diese Hausaufgabe sollten Sie alles bis zum 10. Kapitel durchgearbeitet haben, da Iteration, Rekursion, Verzweigungen und Funktionen mit Rückgabewert benötigt werden.\n",
+    "\n",
+    "\n",
+    "- Geben Sie bitte Ihrem Notebook einen Namen, sodass es Ihnen und Ihrem Partner zugeordnet werden kann (z.B. nachname1_nachname2_hausaufgabe2.ipynb)\n",
+    "- Fügen Sie außerdem Kommentare / Docstrings zu jedem Code hinzu, mit denen Sie erklären, was die Funktion macht (Schleife, Bedingungen, etc. beschreiben). **Falls das nicht gemacht wird, wird der Code nicht bewertet.**\n",
+    "- Falls es **Musterlösungen in den Übungen** gibt, können Sie gerne diese Code übernehmen (eigener Code ist natürlich schöner). Falls Sie das machen, muss aber durch ihre Kommentare hervorgehen, dass Sie den Code verstanden haben.\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n",
     "\n",
     "Wir wünschen viel Erfolg beim Lösen der Aufgaben!"
    ]
@@ -17,6 +26,18 @@
    "source": [
     "## Aufgabe 1\n",
     "\n",
+    "Nennen Sie das Thema, was für Sie bis jetzt am schwersten zu verstehen war und nennen Sie einen Vorschlag, wie Sie es einfacher verstanden hätten. \n",
+    "\n",
+    "Beispiel:\n",
+    "Die print()-Funktion habe ich am Anfang überhaupt nicht verstanden. Zwar gab es eine Definition in den Seminarnotebooks, aber das das war zu unverständlich. Ich hätte mir gewünscht, dass Michel die Funktion an der Tafel vorgestellt hätte und uns gezeigt hätte, wie man sie einsetzt."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Aufgabe 2\n",
+    "\n",
     "*(Dies ist [Aufgabe 1 im 7. Kapitel](https://scm.cms.hu-berlin.de/ibi/python/blob/master/notebooks/seminar07.ipynb#aufgabe-1).)*\n",
     "\n",
     "Kopieren Sie die Schleife aus [Abschnitt 7.5](seminar07.ipynb#7.5-Quadratwurzeln) und verkapseln Sie sie in eine Funktion `mysqrt` die einen Parameter `a` erwartet, einen sinnvollen Wert für `x` wählt und eine Näherung für die Quadratwurzel von `a` zurückliefert."
@@ -77,7 +98,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Aufgabe 2\n",
+    "## Aufgabe 3\n",
     "\n",
     "*(Dies ist [Aufgabe 2 im 7. Kapitel](https://scm.cms.hu-berlin.de/ibi/python/blob/master/notebooks/seminar07.ipynb#aufgabe-2).)*\n",
     "\n",
@@ -134,7 +155,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Aufgabe 3\n",
+    "## Aufgabe 4\n",
     "\n",
     "Ziel dieser Aufgabe ist, dass Sie üben, fremden Code zu lesen, zu verstehen und zu verändern. \n",
     "In [Aufgabe 3 im 7. Kapitel](https://scm.cms.hu-berlin.de/ibi/python/blob/master/notebooks/seminar07.ipynb#aufgabe-3) wird eine Methode zur näherungsweisen Berechnung von $\\pi$ vorgestellt, einschließlich des [Quellcodes](http://thinkpython2.com/code/pi.py). Verändern Sie diesen Quellcode, so dass stattdessen die Näherungsformel \n",
@@ -159,6 +180,51 @@
     "print(estimate_pi())"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Aufgabe 5\n",
+    "\n",
+    "Diese Aufgabe basiert auf einem Rätsel welches im Radioprogramm [Car Talk](http://www.cartalk.com/content/puzzlers) gesendet wurde. \n",
+    "\n",
+    "> Gib' mir ein Wort mit zwei aufeinanderfolgenden doppelten Buchstaben. Ich gebe Dir ein paar Wörter, die sich fast dafür qualifizieren (aber nur fast!) - beispielsweise das Wort Kommission, K-o-m-m-i-s-s-i-o-n. Es wäre gut, aber leider hat sich das \"i\" zwischen \"mm\" und \"ss\" eingeschlichen. Oder \"Ballett\" - wenn wir das \"e\" entfernen könnten, würde es klappen. Aber es gibt mindestens ein Wort, welches zwei aufeinanderfolgende Paare von (jeweils gleichen) Buchstaben hat und vielleicht ist es das einzige solche Wort. Welches Wort ist es?\n",
+    "\n",
+    "Schreiben Sie ein Programm, um das Wort zu finden. Die Lösung für  englische Wörter (http://thinkpython2.com/code/cartalk1.py) findet sogar Wörter mit drei aufeinanderfolgenden Buchstabenpaaren (die es im Deutschen vermutlich nicht gibt, zumindest nicht in der hier verwendeten Wortliste). "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Implementieren Sie hier das Programm"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Augabe 6 - freiwillig\n",
+    "Ein ähnliches Problem:\n",
+    "\n",
+    "![But the windows! What if there's a voyeur watchi-- wait, now I'm turned on too.](https://imgs.xkcd.com/comics/consecutive_vowels.png)\n",
+    "\n",
+    "[Consecutive Vowels](https://xkcd.com/853/), Randall Munroe\n",
+    "\n",
+    "Schreiben Sie ein Programm, welches das Wort mit den meisten hintereinander auftauchenden Vokalen in unserer Wortliste findet."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Implementieren Sie hier das Programm"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
diff --git a/notebooks/seminar09.ipynb b/notebooks/seminar09.ipynb
index 2cab1ce..9b03096 100644
--- a/notebooks/seminar09.ipynb
+++ b/notebooks/seminar09.ipynb
@@ -119,7 +119,7 @@
    "source": [
     "line = fin.readline()\n",
     "word = line.strip()\n",
-    "word"
+    "print(word)"
    ]
   },
   {
@@ -621,13 +621,6 @@
     "    return is_reverse(word, word)"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "... indem wir `is_reverse` aus [Abschnitt 8.11](seminar08.ipynb#8.11-Debugging) verwenden. "
-   ]
-  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -656,67 +649,32 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### 9.6 Glossar\n",
-    "Legen wir uns eine Liste mit den wichtigsten Begriffen an, die wir im Kapitel 9 gelernt haben:\n",
-    "\n",
-    "- Dateiobjekt:\n",
-    "- Zurückführen auf ein vorher gelöstes Problem:\n",
-    "- Spezialfall:\n",
-    "\n",
-    "Ergänzen Sie die Liste in eigenen Worten. Das ist eine gute Erinnerungs- und Übungsmöglichkeit."
+    "... indem wir `is_reverse` aus [Abschnitt 8.11](seminar08.ipynb#8.11-Debugging) verwenden. "
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Ãœbung\n",
-    "\n",
-    "#### Aufgabe 7\n",
-    "\n",
-    "Diese Aufgabe basiert auf einem Rätsel welches im Radioprogramm [Car Talk](http://www.cartalk.com/content/puzzlers) gesendet wurde. \n",
+    "### 9.6 Glossar\n",
+    "Legen wir uns eine Liste mit den wichtigsten Begriffen an, die wir im Kapitel 9 gelernt haben:\n",
     "\n",
-    "> Gib' mir ein Wort mit zwei aufeinanderfolgenden doppelten Buchstaben. Ich gebe Dir ein paar Wörter, die sich fast dafür qualifizieren (aber nur fast!) - beispielsweise das Wort Kommission, K-o-m-m-i-s-s-i-o-n. Es wäre gut, aber leider hat sich das \"i\" zwischen \"mm\" und \"ss\" eingeschlichen. Oder \"Ballett\" - wenn wir das \"e\" entfernen könnten, würde es klappen. Aber es gibt mindestens ein Wort, welches zwei aufeinanderfolgende Paare von (jeweils gleichen) Buchstaben hat und vielleicht ist es das einzige solche Wort. Welches Wort ist es?\n",
+    "- Dateiobjekt:\n",
+    "- Zurückführen auf ein vorher gelöstes Problem:\n",
+    "- Spezialfall:\n",
     "\n",
-    "Schreiben Sie ein Programm, um das Wort zu finden. Die Lösung für  englische Wörter (http://thinkpython2.com/code/cartalk1.py) findet sogar Wörter mit drei aufeinanderfolgenden Buchstabenpaaren (die es im Deutschen vermutlich nicht gibt, zumindest nicht in der hier verwendeten Wortliste). "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Implementieren Sie hier das Programm"
+    "Ergänzen Sie die Liste in eigenen Worten. Das ist eine gute Erinnerungs- und Übungsmöglichkeit."
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Ein ähnliches Problem:\n",
-    "\n",
-    "![But the windows! What if there's a voyeur watchi-- wait, now I'm turned on too.](https://imgs.xkcd.com/comics/consecutive_vowels.png)\n",
+    "## Ãœbung\n",
     "\n",
-    "[Consecutive Vowels](https://xkcd.com/853/), Randall Munroe\n",
-    "\n",
-    "Schreiben Sie ein Programm, welches das Wort mit den meisten hintereinander auftauchenden Vokalen in unserer Wortliste findet."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Aufgabe 8\n",
+    "### Aufgabe 7\n",
     "\n",
-    "Hier ist ein weiteres [Car Talk Rätsel](http://www.cartalk.com/content/puzzlers):\n",
+    "Diese Aufgabe basiert auf einem Rätsel welches im Radioprogramm [Car Talk](http://www.cartalk.com/content/puzzlers) gesendet wurde.  :\n",
     "\n",
     "> Als ich letztens auf der Autobahn gefahren bin ist mir auf meinem Kilometerzähler etwas aufgefallen. Wie die meisten Kilometerzähler hat er sechs Stellen, für die ganzen Kilometer. Wenn also mein Auto 300000 Kilometer gefahren wäre, dann würde ich 3-0-0-0-0-0 sehen. Was ich sah, war sehr interessant. Mir ist aufgefallen, dass die letzten vier Ziffern ein Palindrom gebildet haben, d.h. rückwärts gelesen ergeben sie die gleiche Zahlenfolge wie vorwärts. Beispielswiese ist 5-4-4-5 ein Palindrom. Mein Kilometerzähler könnte also beispielsweise 3-1-5-4-4-5 angezeigt haben. \n",
     ">\n",
@@ -740,7 +698,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Aufgabe 9\n",
+    "### Aufgabe 8\n",
     "\n",
     "Und noch ein [Car Talk Rätsel](http://www.cartalk.com/content/puzzlers) welches sich mit Suche lösen lässt:\n",
     "\n",
-- 
GitLab