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
,semester
undmat_nr
speichern, 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 ausasdict
aufgerufen mit dem Beispielstudenten der Variablenstud
zu.Die Aufgabe wird mit 0 Punkten bewertet, wenn
Student
keine 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')]