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