{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "b340abe0-1022-48c0-916e-bc9a7a2fca91",
   "metadata": {},
   "source": [
    "# Woche 20\n",
    "\n",
    "SS 2026, Klausurvorbereitung Nachschreibeklausur\n",
    "\n",
    "Ansatz: Wir erstellen eine Aufgabenstellungen, die eine Vielzahl von einzelnen kleinen Aufgaben und -Lösungen erlaubt. \n",
    "Wer die kann, wird der Klausur mit großer Freude entgegenblicken!\n",
    "\n",
    "Vorgehen, wenn Sie nicht weiterkommen: Fragen Sie auch eine KI, Sie werden ein Programm bekommen. Verstehen sie das Programm. Fragen Sie öfters, ggf. auch explizit nach unterschiedlichen Lösungen, vergleichen Sie die verschiedenen Lösungen. Schließen Sie die KI, schlafen Sie eine Nacht darüber. Versuchen Sie am nächsten Morgen, die Lösung ohne KI selbst hinzubekommen."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "e73675ec-b024-4c94-a7e6-0724b2fb848f",
   "metadata": {},
   "source": [
    "## Sportarten\n",
    "\n",
    "Wir haben einige Personen und Sportarten:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ed33379c-6ba3-419a-a967-8c94e278ba62",
   "metadata": {},
   "outputs": [],
   "source": [
    "Personen = [ \"Alfa\", \"Beta\", \"Charly\" ]\n",
    "Sportarten = [ \"Schmimmen\", \"Laufen\", \"Schach\", \"Tanzen\" ]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "249df751-6c6c-47da-a7dc-2d0d287c2880",
   "metadata": {},
   "source": [
    "Erstelle eine Datenstruktur, die für einige dieser Personen die Sportarten auflistet. Empfohlen: Ein Dict von Mengen."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "1d509695-58d9-4f2f-bef5-649e5a7b8d15",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Alfa': {'Schwimmen'}, 'Charly': {'Schach', 'Tanzen'}, 'Beta': {'Tanzen'}}"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "person_sportart = { \"Alfa\": { \"Schwimmen\" }, \"Charly\": { \"Schach\", \"Tanzen\" }, \"Beta\": {\"Tanzen\" } }\n",
    "person_sportart"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b95edc45-ae7b-4420-975f-bc744b181abb",
   "metadata": {},
   "source": [
    "Berechne daraus eine Datenstruktur, die für jede Sportart die Personen auflistet, die diese Sportart ausüben. Empfohlen: Ein Dict von Mengen."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "47869872-d778-487c-9e62-42780bbaf0ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Tanzen': {'Beta', 'Charly'}}"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sportart_person = { \"Tanzen\": { \"Charly\", \"Beta\" } }\n",
    "sportart_person"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb5ef360-7d3f-490f-996e-4cbfcfdeaa3b",
   "metadata": {},
   "source": [
    "## Touringpreisträger\n",
    "\n",
    "Wir haben einige Touringpreisträger und ihre Geburtstage:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c9ca3494-caa5-4d95-b579-dbc05044c433",
   "metadata": {},
   "outputs": [],
   "source": [
    "Touringpreisträger = \"\"\"\n",
    "Donald E. Knuth\n",
    "10. Januar 1938\n",
    "Analyse von Algorithmen und Entwurf von Programmiersprachen. Sein mehrbändiges Werk The Art of Computer Programming gilt als „Bibel“ der Informatik.\n",
    "\n",
    "Tim Berners-Lee\n",
    "8. Juni 1955\n",
    "Erfindung des World Wide Web, von HTML, HTTP und dem ersten Webbrowser.\n",
    "\n",
    "Edgar F. Codd\n",
    "19. August 1923\n",
    "Erfindung des relationalen Modells für Datenbankmanagementsysteme, das die Grundlage fast aller modernen Datenbanken bildet.\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "254a2cc1-7fb8-45c5-be53-958d63003546",
   "metadata": {},
   "source": [
    "Erstelle eine Datenstruktur, die für Touringpreiträger das Geburtsdatum und die Erfindung auflistet. Empfohlen: Ein Dict von Dicts. Das Ergebnis sieht etwa so aus:\n",
    "\n",
    "```\n",
    "{\n",
    "    'Donald E. Knuth': {\n",
    "        'Geburtstag': '10. Januar 1938',\n",
    "        'Leistung': 'Analyse von Algorithmen und Entwurf von Programmiersprachen...'\n",
    "    },\n",
    "    'Tim Berners-Lee': {\n",
    "        'Geburtstag': '8. Juni 1955',\n",
    "        'Leistung': 'Erfindung des World Wide Web...'\n",
    "    },\n",
    "    # ... usw.\n",
    "}\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe42ef56-9859-4f40-8ca2-ae8b2cad15a2",
   "metadata": {},
   "source": [
    "Erweitern Sie ggf. die Lösung:\n",
    "\n",
    "* Fügen Sie zu 'Geburtstag' und 'Leistung' noch die Attribute (Schlüssel-Wert-Paare)  'Vorname' und 'Familienname' hinzu\n",
    "* Gliedern Sie auch den Geburtstag digitalisierungsfreundlicher auf: Fügen Sie auch noch die Attribute 'JJJJ', 'MM', 'TT'  hinzu\n",
    "* Erstellen Sie ein Dict, das zu jedem Monat die Touringpreisträger nennt, die in diesem Monat Geburtstag haben."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "676d95bf-53eb-4a44-bc1c-64573e1f50b2",
   "metadata": {},
   "source": [
    "## CSV-Text 2 csv"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d93cd7ee-8408-4d62-9e88-470c9ac0fe86",
   "metadata": {},
   "source": [
    "gegeben ein String nach Art von CSV:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a8dd7fa9-1009-442d-8a8d-2afc23e7f8ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "csv_string = \"\"\"frei \tvor \tName \tStatus\n",
    "140 \t0 Min. \tHofgarten mapmarker \tgeöffnet\n",
    "99 \t337 Std. \tLandratsamt (P10) mapmarker \tgeöffnet\n",
    "33 \t0 Min. \tFreyung (P3) mapmarker \tgeöffnet\n",
    "136 \t0 Min. \tCity-Center (P5) mapmarker \tgeöffnet\n",
    "23 \t2 Min. \tZentrum (P6) mapmarker \tgeöffnet\n",
    "\"\"\"\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "cf621b73-dbfd-4abd-9a7e-dd3aef11642a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'abc safdsf s'"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"   abc safdsf s  \".strip()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "00481c6c-b13a-4af7-977b-098e538620a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['frei \\tvor \\tName \\tStatus',\n",
       " '140 \\t0 Min. \\tHofgarten mapmarker \\tgeöffnet',\n",
       " '99 \\t337 Std. \\tLandratsamt (P10) mapmarker \\tgeöffnet',\n",
       " '33 \\t0 Min. \\tFreyung (P3) mapmarker \\tgeöffnet',\n",
       " '136 \\t0 Min. \\tCity-Center (P5) mapmarker \\tgeöffnet',\n",
       " '23 \\t2 Min. \\tZentrum (P6) mapmarker \\tgeöffnet']"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zeilen = csv_string.splitlines()\n",
    "zeilen"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "9d322460-5eb5-4959-9ae3-839f54a48f29",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['frei', 'vor', 'Name', 'Status']\n",
      "['140', '0 Min.', 'Hofgarten mapmarker', 'geöffnet']\n",
      "['99', '337 Std.', 'Landratsamt (P10) mapmarker', 'geöffnet']\n",
      "['33', '0 Min.', 'Freyung (P3) mapmarker', 'geöffnet']\n",
      "['136', '0 Min.', 'City-Center (P5) mapmarker', 'geöffnet']\n",
      "['23', '2 Min.', 'Zentrum (P6) mapmarker', 'geöffnet']\n"
     ]
    }
   ],
   "source": [
    "ergebnis = []\n",
    "\n",
    "for zeile in zeilen:\n",
    "    zeile_als_liste = [ z.strip() for z in zeile.split(\"\\t\")] \n",
    "    print( zeile_als_liste )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5ec1973c-1626-4eec-96fb-f75f310480d5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c123f421-9aa3-4594-b52b-8dbf9b9dd79d",
   "metadata": {},
   "source": [
    "## CSV (nochmal)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9965107-56dc-4e56-8d49-474eb999f685",
   "metadata": {},
   "source": [
    "gegeben: In einer CSV-Datei sind Messwerte gegeben (z.B. Geschlecht, Körpergröße, Alter). Wenn wir die Datei einlesen erhalten wir folgenden String data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "5522d022-cd7a-4d60-95c5-288e99969214",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = \"\"\"m;180;21\n",
    "m;183;27\n",
    "m;177;23\n",
    "f;164;19\n",
    "f;167;25\n",
    "f;167;24\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7c60e5b7-1cb2-493b-97ce-578a4567abc3",
   "metadata": {},
   "source": [
    "Gesucht: Wir benötigen eine Tabelle in der Form einer Liste von Listen, zeilenweise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2ef85935-20bc-441f-98f5-eea6f393f18b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c20a05c6-2f2f-4206-a0c0-3040b4b87d34",
   "metadata": {},
   "source": [
    "Gesucht: Wir benötigen eine Tabelle in der Form einer Liste von Listen -- jetzt aber **spaltenweise**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08a86cd9-dd78-4812-ae11-ac0b5cebb1ed",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "eeddb65e-a4f9-49f2-afd0-37094e54a277",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "21a7531c-e64e-4933-85d4-d702960fdf7a",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "jupytext": {
   "formats": "ipynb,md:myst"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
