Skip to content
Snippets Groups Projects
programmierspaß_spiele.ipynb 6.21 KiB
Newer Older
{
 "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
}