Lösungen Extended Applications¶
Aufgabe¶
3 Punkte
Schreibe einen Generator square_count mit einem Eingabeparameter n, welcher die Quadratzahlen von $1\dots n^2$ ausgibt.
Die Aufgabe gibt 0 Punkte, wenn die Funktion square_count kein Generator ist!
Hinweis: Bei Eingabe von 5 soll die Ausgabe 1 4 9 16 sein.
def square_count(n: int) -> int:
for i in range(1, n):
yield i*i
for n in range(2, 7):
print(f"Square Numbers from 0 to {n-1}:", *square_count(n))
Square Numbers from 0 to 1: 1 Square Numbers from 0 to 2: 1 4 Square Numbers from 0 to 3: 1 4 9 Square Numbers from 0 to 4: 1 4 9 16 Square Numbers from 0 to 5: 1 4 9 16 25
Aufgabe¶
3 Punkte
Schreibe einen Generator naturals, welcher mit jedem Aufruf die nächste natürliche Zahl ausgibt. (Angefangen mit 1)
- Es sind keine Eingabeparameter notwendig.
- Ist die Funktion kein generator, wird diese Aufgabe mit 0 Punkten bewertet
Hinweis: Orientiere dich an dem Beispiel faktoriel_gen
import types
def naturals() -> int:
curr = 1
while 1:
yield curr
curr += 1
gen: types.GeneratorType = naturals()
for i in range(1, 10):
number: int = next(gen)
print(number, end=', ')
1, 2, 3, 4, 5, 6, 7, 8, 9,
Aufgabe¶
6 Punkte
Schreiben Sie eine Dataclass Student
Die dataclass soll die Werte
vorname,nachname,semesterundmat_nrspeichern, vergebe hierzu selber den !!geeigneten!! Datentypen. Mache dir dazu Gedanken ob es Sinnvoll beispielweise die Semesteranzahl als Float zu speichern.importiere aus dem dataclasses modul die Funktion
asdict, erstelle ein Objekt mit den Werten aus dem Beispielstundent, weiße den rückgabewert ausasdictaufgerufen mit dem Beispielstudenten der Variablenstudzu.Die Aufgabe wird mit 0 Punkten bewertet, wenn
Studentkeine dataclass ist!Hat einer der Attribute keinen geeigneten Datentypen, führt dies nicht zu Punktabzug bei zwei oder mehr schon.
Beispielstudent:
| Attribut | Wert |
|---|---|
| vorname | Martin |
| nachname | Le |
| mat_nr | 520420 |
| semester | 5 |
from dataclasses import dataclass, asdict
@dataclass
class Student:
vorname: str
nachname: str
mat_nr: int
semester: int
student = Student(
vorname='Martin',
nachname='Le',
mat_nr=520420,
semester=5)
stud = asdict(student)
from pprint import pprint
pprint(stud, width=1)
{'mat_nr': 520420,
'nachname': 'Le',
'semester': 5,
'vorname': 'Martin'}
Aufgabe¶
6 Punkte
Gegeben sind zwei Listen colorn & colorv_hex, welche zueinander Index Sortiert sind.
Schreiben nun eine Dataclass Color mit den Attributen name & value und vergebe geeignete Type Hints.
Erstelle danach eine Liste, welche die Werte aus colorn & colorv_hex in die Dataclass Color umwandeln, und speicher die Liste in der variablen colors.
colorn = ['RED', 'GREEN', 'BLUE', 'YELLOW', 'PURPLE']
colorv_hex = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF']
colors = None
@dataclass
class Color:
name: str
value: str
colors = [Color(n, w) for n, w in zip(colorn, colorv_hex)]
pprint(colors)
[Color(name='RED', value='#FF0000'), Color(name='GREEN', value='#00FF00'), Color(name='BLUE', value='#0000FF'), Color(name='YELLOW', value='#FFFF00'), Color(name='PURPLE', value='#FF00FF')]