Added Lecture 4
This commit is contained in:
@@ -0,0 +1,334 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "c3c41172-0fa4-4542-af74-5912b25dce09",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"# Lösungen Extended Applications"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0200f54c-1416-4e4b-bcb9-fbe781bff590",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"### Aufgabe\n",
|
||||
"\n",
|
||||
"*3 Punkte*\n",
|
||||
"\n",
|
||||
"Schreibe einen Generator `square_count` mit einem Eingabeparameter `n`, welcher die Quadratzahlen von $1\\dots n^2$ ausgibt.\n",
|
||||
"\n",
|
||||
"Die Aufgabe gibt 0 Punkte, wenn die Funktion `square_count` kein Generator ist!\n",
|
||||
"\n",
|
||||
"Hinweis: Bei Eingabe von `5` soll die Ausgabe `1 4 9 16` sein."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "b27328c4-e085-4783-8ea8-c45c62b63d9f",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Square Numbers from 0 to 1: 1\n",
|
||||
"Square Numbers from 0 to 2: 1 4\n",
|
||||
"Square Numbers from 0 to 3: 1 4 9\n",
|
||||
"Square Numbers from 0 to 4: 1 4 9 16\n",
|
||||
"Square Numbers from 0 to 5: 1 4 9 16 25\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def square_count(n: int) -> int: \n",
|
||||
" for i in range(1, n):\n",
|
||||
" yield i*i\n",
|
||||
"\n",
|
||||
"for n in range(2, 7):\n",
|
||||
" print(f\"Square Numbers from 0 to {n-1}:\", *square_count(n))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "72f74416-f665-475f-a411-aa2ad5a9c257",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"### Aufgabe\n",
|
||||
"\n",
|
||||
"*3 Punkte*\n",
|
||||
"\n",
|
||||
"Schreibe einen Generator `naturals`, welcher mit jedem Aufruf die nächste natürliche Zahl ausgibt. (Angefangen mit 1)\n",
|
||||
"\n",
|
||||
"- Es sind keine Eingabeparameter notwendig.\n",
|
||||
"- Ist die Funktion kein generator, wird diese Aufgabe mit 0 Punkten bewertet\n",
|
||||
"\n",
|
||||
"*Hinweis*: Orientiere dich an dem Beispiel `faktoriel_gen`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "e5023e1a-1ab0-42ec-87f2-87c2eee46274",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import types"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"id": "8769a98d-5ec0-407a-9ba0-538daff61597",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"1, 2, 3, 4, 5, 6, 7, 8, 9, "
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def naturals() -> int:\n",
|
||||
" curr = 1\n",
|
||||
" while 1:\n",
|
||||
" yield curr\n",
|
||||
" curr += 1\n",
|
||||
" \n",
|
||||
"gen: types.GeneratorType = naturals()\n",
|
||||
"for i in range(1, 10):\n",
|
||||
" number: int = next(gen)\n",
|
||||
" print(number, end=', ')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "7514798b-d716-4161-a0b7-a644ac8bc67a",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"### Aufgabe\n",
|
||||
"\n",
|
||||
"*6 Punkte*\n",
|
||||
"\n",
|
||||
"Schreiben Sie eine Dataclass `Student`\n",
|
||||
"\n",
|
||||
"- Die dataclass soll die Werte `vorname`, `nachname`, `semester` und `mat_nr` speichern, vergebe hierzu selber den !!geeigneten!! Datentypen. Mache dir dazu Gedanken ob es Sinnvoll beispielweise die Semesteranzahl als Float zu speichern.\n",
|
||||
"\n",
|
||||
"- importiere aus dem dataclasses modul die Funktion `asdict`, erstelle ein Objekt mit den Werten aus dem Beispielstundent, weiße den rückgabewert aus `asdict` aufgerufen mit dem Beispielstudenten der Variablen `stud` zu.\n",
|
||||
"\n",
|
||||
"- Die Aufgabe wird mit 0 Punkten bewertet, wenn `Student` keine dataclass ist!\n",
|
||||
"\n",
|
||||
"- Hat einer der Attribute keinen geeigneten Datentypen, führt dies nicht zu Punktabzug bei zwei oder mehr schon."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e6d510b0-1565-489c-9441-1812153a3a9f",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "subslide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"Beispielstudent:\n",
|
||||
"\n",
|
||||
"|Attribut|Wert|\n",
|
||||
"|-|-|\n",
|
||||
"|vorname|Martin|\n",
|
||||
"|nachname|Le|\n",
|
||||
"|mat_nr|520420|\n",
|
||||
"|semester|5|"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"id": "36bd4680-e75e-4db0-9442-9c62f393608e",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "subslide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'mat_nr': 520420,\n",
|
||||
" 'nachname': 'Le',\n",
|
||||
" 'semester': 5,\n",
|
||||
" 'vorname': 'Martin'}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from dataclasses import dataclass, asdict\n",
|
||||
"\n",
|
||||
"@dataclass\n",
|
||||
"class Student:\n",
|
||||
" vorname: str\n",
|
||||
" nachname: str\n",
|
||||
" mat_nr: int\n",
|
||||
" semester: int \n",
|
||||
"\n",
|
||||
"student = Student(\n",
|
||||
" vorname='Martin',\n",
|
||||
" nachname='Le',\n",
|
||||
" mat_nr=520420,\n",
|
||||
" semester=5)\n",
|
||||
"\n",
|
||||
"stud = asdict(student)\n",
|
||||
"\n",
|
||||
"from pprint import pprint\n",
|
||||
"pprint(stud, width=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "c1471211-26a2-4607-82de-9cc706cfc2fb",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"### Aufgabe\n",
|
||||
"\n",
|
||||
"*6 Punkte*\n",
|
||||
"\n",
|
||||
"Gegeben sind zwei Listen `colorn` & `colorv_hex`, welche zueinander Index Sortiert sind.\n",
|
||||
"\n",
|
||||
"Schreiben nun eine Dataclass `Color` mit den Attributen `name` & `value` und vergebe geeignete Type Hints.\n",
|
||||
"\n",
|
||||
"Erstelle danach eine Liste, welche die Werte aus `colorn` & `colorv_hex` in die Dataclass `Color` umwandeln, und speicher die Liste in der variablen `colors`.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"id": "2abd79b2-2083-422b-a83d-7cd3f03aa82c",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"colorn = ['RED', 'GREEN', 'BLUE', 'YELLOW', 'PURPLE']\n",
|
||||
"colorv_hex = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 25,
|
||||
"id": "9a82261a-a644-4118-a4f2-e663f10a75bd",
|
||||
"metadata": {
|
||||
"editable": true,
|
||||
"slideshow": {
|
||||
"slide_type": "subslide"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[Color(name='RED', value='#FF0000'),\n",
|
||||
" Color(name='GREEN', value='#00FF00'),\n",
|
||||
" Color(name='BLUE', value='#0000FF'),\n",
|
||||
" Color(name='YELLOW', value='#FFFF00'),\n",
|
||||
" Color(name='PURPLE', value='#FF00FF')]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"colors = None\n",
|
||||
"\n",
|
||||
"@dataclass\n",
|
||||
"class Color:\n",
|
||||
" name: str\n",
|
||||
" value: str\n",
|
||||
"\n",
|
||||
"colors = [Color(n, w) for n, w in zip(colorn, colorv_hex)]\n",
|
||||
" \n",
|
||||
"pprint(colors)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"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.12.7"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
Reference in New Issue
Block a user