From 5cf7ce71ad28b0c97256078bac57296ceba1f2e3 Mon Sep 17 00:00:00 2001
From: schwabmi <michel.j.schwab@gmail.com>
Date: Fri, 25 Oct 2019 10:10:29 +0200
Subject: [PATCH] =?UTF-8?q?Programmierspa=C3=9F=20spiele=20notebook?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../programmierspa\303\237_spiele.ipynb"      | 178 ++++++++++++++++++
 1 file changed, 178 insertions(+)
 create mode 100644 "notebooks/programmierspa\303\237_spiele.ipynb"

diff --git "a/notebooks/programmierspa\303\237_spiele.ipynb" "b/notebooks/programmierspa\303\237_spiele.ipynb"
new file mode 100644
index 0000000..cbe2c4a
--- /dev/null
+++ "b/notebooks/programmierspa\303\237_spiele.ipynb"
@@ -0,0 +1,178 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Einführungsaufgaben\n",
+    "\n",
+    "## neue Bibliothek\n",
+    "### nb_black \n",
+    "- Installation (Terminal / Anaconda prompt): <code>$ [sudo] pip install nb_black </code>\n",
+    "- https://github.com/dnanhkhoa/nb_black\n",
+    "- uncompromising Python code formatter\n",
+    "- makes code review faster\n",
+    "- Apply by putting this code <code>%load_ext nb_black </code> into the first cell in your Notebook, run it and that's all :)\n",
+    "- based on black\n",
+    "    - https://pypi.org/project/black/\n",
+    "    - for \"normal\" python scripts\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%load_ext nb_black"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Würfeln\n",
+    "\n",
+    "\n",
+    "1. Erstelle eine Funktion <code>dice</code>, die einen Würfel x-mal würfelt. (x soll die Eingabe der Funktion sein).  \n",
+    "2. Gebe eine Statistik aus, wie oft welcher Wert gewürfelt wurde.\n",
+    "    - Tipp: Nutze die Bibliothek random, um zufällige Werte zu generieren.\n",
+    "    - Tipp: Nutze Schleifen (while, for)\n",
+    "3. Verkürze deinen Code durch List Comprehension "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def dice(x):\n",
+    "    \"\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Codetest\n",
+    "dice(1000000)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Schere, Stein, Papier\n",
+    "\n",
+    "1. Erstelle ein Schere-Stein-Papier-Spiel, der eine Eingabe (durch <code> input() </code>) von dir entgegennimmt und den Computer eine zufällige Antwort generieren lässt. Anschließend soll die Funktion ausgeben, wer gewonnen hat.\n",
+    "    - Nutze Schleifen (for, while)\n",
+    "    - Bedingungen (if-statements)\n",
+    "    - Nutze die Bibliothek random\n",
+    "    - Akzeptiere Groß-und Kleinschreibung"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def ssp():\n",
+    "    \"\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ssp()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Plotten\n",
+    "\n",
+    "1. Plotte eine sinus und eine cosinus Kurve. \n",
+    "    - Nutze die Bibliothek numpy, um die sinus und cosinus Funktion zu benutzen\n",
+    "    - Nutze die Bibliothek matplotlib, um die Kurven zu zeichnen\n",
+    "2. Gebe dem Plot eine Überschrift, Achsenbeschriftungen, Einschränkungen der x-Achse (-360° bis 360°) und eine Legende."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Hangman\n",
+    "\n",
+    "\n",
+    "\n",
+    "1. Erstelle ein Hangman-Spiel in mehreren Schritten (https://de.wikipedia.org/wiki/Galgenm%C3%A4nnchen). Die nächsten Schritte sind Tipps, wie ihr vorgehen könnt. Das ist nur eine von vielen Möglichkeiten. Probiert es selbst aus, ihr könnt gerne auch einen anderen Weg gehen.\n",
+    "2. Erstelle eine Funktion, die zwei Strings entgegennimmt und alle Indizes wiedergibt, an denen der erste String im zweiten String erscheint. \n",
+    "    - Nutze die Bibliothek <code>re</code> und ggf. die Funktion  <code>finditer</code> (Man kann die Ausgabe von <code>finditer</code> durchlaufen und durch <code>start()</code> auf den Index zugreifen. Siehe auch die Dokumentation und Beispiele im Internet) \n",
+    "  \n",
+    "3. Anschließend erweitere die Funktion, sodass die Funktion nur noch das Wort entgegennimmt und du per Eingabe (<code>input()</code>) nacheinander mehrere Buchstaben eingeben kannst (z.B. per Schleife, siehe -> <code>while true:</code>). Auch hier sollen wieder alle Indizes ausgegeben werden, an denen die einzelnen Buchstaben im Wort erscheinen.\n",
+    "4. Erstelle zunächst eine Bedingung, die checkt, ob der Buchstabe im Wort vorkommt. Falls ja, gebe den Buchstaben aus. Wenn nein, gebe bitte eine Nachricht aus, dass die Eingabe falsch war.\n",
+    "5. Was brauchen wir noch? In jedem Schritt die Ausgabe von dem unvollständigen Wort mit den schon gefundenen Buchstaben. \n",
+    "    - eine Liste mit sovielen Elementen, wie es Buchstaben im Wort gibt. Jedes Element ist ein Minus oder Unterstrich\n",
+    "    - Erweitere die Bedingung aus 4), indem du in der Liste das Element mit dem zur Zeit eingegebenen Buchstaben ersetzt\n",
+    "6. Jetzt brauchen wir noch Abbruchbedingungen in der Schleife durch <code>return</code>. Wo müssen diese hin? \n",
+    "7. Wir können jetzt durch einen Counter die Anzahl der Versuche limitieren. (zusätzliche Bedingung?)\n",
+    "8. Ein Willkommenstext wäre außerdem schön.\n",
+    "9. Anstatt eines Wortes soll die Funktion nun eine Liste von Wörtern entgegennehmen und zufällig eins aussuchen, um das gespielt wird. Dann weißt du auch nicht mehr, welches dran ist.\n",
+    "10. Anzahl der Fehlversuche variabel setzen (z.B. bei jedem neuen Spiel einsetzbar, verschiedene Schwierigkeitsstufen, abhängig von der Länge des Wortes, etc.)\n",
+    "11. Ein Hangman-Bild bei jedem Fehlversuch anzeigen und jedes Mal erweitern.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# hier ist ein Bild, was ihr theoretisch zur Visualisierung nehmen könnt.\n",
+    "# Ihr könnt euch aber auch ein eigenes ausdenken. Vielleicht gibt es coolere.\n",
+    "hangman = \"\"\" \n",
+    "\n",
+    "      ______\n",
+    "      |     |\n",
+    "      o     |\n",
+    "     \\|/    |\n",
+    "      |     |\n",
+    "     / \\    | \n",
+    "           / \\ \n",
+    "\"\"\"\n",
+    "print(hangman)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "language_info": {
+   "name": "python",
+   "pygments_lexer": "ipython3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
-- 
GitLab