From 9296c1b4826e7bd0b81b79925f966c1136c66b1c Mon Sep 17 00:00:00 2001 From: luay
Date: Mon, 8 Jun 2026 16:02:09 +0200 Subject: [PATCH] assignments added --- assignments/abteilungen_ha.py | 39 ++++++++++++++++++++ assignments/aufgaben.md | 58 ++++++++++++++++++++++++++++++ assignments/einkaufswagen.py | 0 assignments/gehalt.py | 7 ++++ assignments/list_comprehension.py | 22 ++++++++++++ assignments/musterlösungen.zip | Bin 0 -> 3067 bytes assignments/test.py | 54 ---------------------------- 7 files changed, 126 insertions(+), 54 deletions(-) create mode 100644 assignments/abteilungen_ha.py create mode 100644 assignments/aufgaben.md create mode 100644 assignments/einkaufswagen.py create mode 100644 assignments/gehalt.py create mode 100644 assignments/list_comprehension.py create mode 100644 assignments/musterlösungen.zip delete mode 100644 assignments/test.py diff --git a/assignments/abteilungen_ha.py b/assignments/abteilungen_ha.py new file mode 100644 index 0000000..a617677 --- /dev/null +++ b/assignments/abteilungen_ha.py @@ -0,0 +1,39 @@ +# 1. Decorator: Loggt die Ausführung der Fusion +def log_merger(func): + # TODO + # Implementieren Sie den Decorator, der die Ausführung der Fusion loggt + +#TODO +# Implementieren Sie die Klasse Abteilung. +# Konstruktor (__init__): Nimmt den Namen, das Budget und ein Dictionary der Mitarbeiter entgegen + + # 2. Magic Method __add__: Definiert das Verhalten beim '+' Operator + #TODO + # Implementieren Sie die __add__ Methode, um zwei Abteilungen zu fusionieren + # Dabei sollen die Namen kombiniert, die Budgets addiert und die Mitarbeiter zusammengeführt werden + # Mitarbeiter mit der Rolle "Intern" sollen dabei ausgeschlossen werden + # Verwenden Sie die Decorator-Funktion log_merger, um die Ausführung der Fusion zu loggen + + + # 3. Magic Method __str__: Definiert die Textausgabe bei print(objekt) + #TODO + # Implementieren Sie die __str__ Methode, um eine lesbare Darstellung der Abteilung zu ermöglichen + # Die Ausgabe sollte den Namen, das Budget und die Anzahl der Mitarbeiter enthalten + # Beispiel: "Abteilung: Marketing & HR | Budget: 100000€ | Mitarbeiter: 7" + +if __name__ == "__main__": + # Zwei Abteilungen mit Dictionaries erstellen + it_abteilung = Abteilung( + "IT", 50000, {"Anton": "Developer", "Barbara": "Projektmanagerin", "Carl": "Praktikant"}) + design_abteilung = Abteilung( + "Design", 30000, {"David": "Designer", "Eva": "Praktikant", "Felix": "Abteilungsleiter"}) + + # Fusion durchführen (Ruft log_merger und __add__ auf) + merged_abteilung = it_abteilung + design_abteilung + + # Ergebnisse ausgeben + print("------------------") + print(merged_abteilung) # Ruft __str__ auf + print("Final mitarbeiter List:") + for name, role in merged_abteilung.mitarbeiter.items(): + print(f"- {name}: {role}") diff --git a/assignments/aufgaben.md b/assignments/aufgaben.md new file mode 100644 index 0000000..0c11579 --- /dev/null +++ b/assignments/aufgaben.md @@ -0,0 +1,58 @@ +# Aufgaben +## Aufgabe 1 +### List Comprehension + +In der Datei _list_comprehension_ ist eine Liste _artikel_ mit Daten von Supermarktartikeln +```python +artikel = [ + {"artikel": "Quark", "stueckzahl": 18, "price": 1.59, "verfallsdatum": "2026-06-25", "lieferant": "Frisch-Milch AG", "lagerplatz": "Kühlregal 1"}, + {...}, ... +] +``` +Erstellen Sie mittels List Comprehension eine Liste _abgelaufene_artikel_ von Tupeln. Jedes Tupel soll den artikel-Namen und den entsprechenden lagerplatz enthalten. +Berücksichtigen Sie dabei nur die Artikel, deren verfallsdatum vor dem aktuellen Datum liegt. + +Das Zielformat der Liste sollte wie folgt aussehen: +```python +[("Artikelname", "Lagerplatz"), ...] +``` +## Aufgabe 2 +### Decorator +Implementieren Sie einen Decorator, der ein Dictionary (cache_dict) nutzt, um die Ergebnisse von Funktionsaufrufen basierend auf ihren Argumenten zu speichern. + +## Aufgabe 3 +### Magic Methodes +Erstellen Sie eine Klasse _Einkaufswagen_ mit einem Konstruktur, der _Kunde_ und _artikel_ entgegennimmt. +Überladen Sie den Operator (*), sodass wenn ein Einkaufswagen mit einer Zahl multipliziert ist werden nur die Artikel in der Liste vervielfacht. + +## Hausaufgabe +### Abteilungs-Fusion +- Implementieren Sie den Decorator log_merger, der bei jedem Aufruf der Fusionsfunktion eine Log-Nachricht auf der Konsole ausgibt (z. B.: "[SYSTEM LOG]: Initiating merger..."). Achten Sie darauf, dass der Decorator den Rückgabewert der ursprünglichen Funktion korrekt weitergibt. +- Erstellen Sie die Klasse Abteilung mit folgenden Komponenten: + + Konstruktor (__init__): + Initialisiert die Abteilung mit einem name, einem budget und einem employees-Dictionary (Format: {"Name": "Rolle"}). + + Magic Method __add__: + + Definieren Sie das Verhalten beim Addieren von zwei Abteilungen (obj1 + obj2). + + Anforderungen für die Fusion: + + - Die Namen der Abteilungen sollen kombiniert werden (z. B. "IT & HR"). + + - Die Budgets der beiden Abteilungen werden addiert. + + - Die Mitarbeiter-Dictionaries werden zusammengeführt. + + - Mitarbeiter mit der Rolle "Intern" sollen bei der Fusion ausgeschlossen werden. + + Decorator: Dekorieren Sie diese Methode mit dem oben erstellten @log_merger, um den Fusionsvorgang zu protokollieren. + + Magic Method __str__: + + Definieren Sie die Textausgabe für die Klasse, um eine übersichtliche Darstellung bei print(objekt) zu ermöglichen. + + Formatvorgabe: "Abteilung: [Name] | Budget: [Budget]€ | Employees: [Anzahl]" + +- Führen Sie das Programm aus, um die korrekte Fusion der Abteilungen zu überprüfen. \ No newline at end of file diff --git a/assignments/einkaufswagen.py b/assignments/einkaufswagen.py new file mode 100644 index 0000000..e69de29 diff --git a/assignments/gehalt.py b/assignments/gehalt.py new file mode 100644 index 0000000..2cfe2d2 --- /dev/null +++ b/assignments/gehalt.py @@ -0,0 +1,7 @@ +import time + + +def gehalt(name): + # Komplexe Berechnung + time.sleep(3) + return 3000 diff --git a/assignments/list_comprehension.py b/assignments/list_comprehension.py new file mode 100644 index 0000000..a5dae13 --- /dev/null +++ b/assignments/list_comprehension.py @@ -0,0 +1,22 @@ +artikel = [ + {"artikel": "Quark", "stueckzahl": 18, "price": 1.59, "verfallsdatum": "2026-06-25", + "lieferant": "Frisch-Milch AG", "lagerplatz": "Kühlregal 1"}, + {"artikel": "Eier", "stueckzahl": 30, "price": 3.29, "verfallsdatum": "2026-06-17", + "lieferant": "Bio-Hof Müller", "lagerplatz": "Kühlregal 2"}, + {"artikel": "Fleischwurst", "stueckzahl": 10, "price": 2.89, "verfallsdatum": "2026-06-15", + "lieferant": "Wurstwaren Huber", "lagerplatz": "Kühlregal 3"}, + {"artikel": "Milch", "stueckzahl": 20, "price": 1.49, "verfallsdatum": "2026-06-16", + "lieferant": "Molkerei Süd", "lagerplatz": "Kühlregal 1"}, + {"artikel": "Reis", "stueckzahl": 40, "price": 1.99, "verfallsdatum": "2027-01-01", + "lieferant": "Global Import GmbH", "lagerplatz": "Regal A4"}, + {"artikel": "Joghurt", "stueckzahl": 25, "price": 0.99, "verfallsdatum": "2026-06-16", + "lieferant": "Molkerei Süd", "lagerplatz": "Kühlregal 1"}, + {"artikel": "Salami", "stueckzahl": 22, "price": 3.99, "verfallsdatum": "2026-07-02", + "lieferant": "Wurstwaren Huber", "lagerplatz": "Kühlregal 3"}, + {"artikel": "Sahne", "stueckzahl": 12, "price": 1.29, "verfallsdatum": "2026-06-17", + "lieferant": "Molkerei Süd", "lagerplatz": "Kühlregal 2"}, + {"artikel": "Butter", "stueckzahl": 40, "price": 2.29, "verfallsdatum": "2026-08-05", + "lieferant": "Molkerei Süd", "lagerplatz": "Kühlregal 2"}, + {"artikel": "Käse", "stueckzahl": 15, "price": 4.99, "verfallsdatum": "2026-06-17", + "lieferant": "Käsemanufaktur", "lagerplatz": "Kühlregal 1"} +] diff --git a/assignments/musterlösungen.zip b/assignments/musterlösungen.zip new file mode 100644 index 0000000000000000000000000000000000000000..2d73cacc6ed11ecaee71e806f133228e82d305ff GIT binary patch literal 3067 zcmbW32{e>@AIF~=!_3@4C0khrgV&lOG?o;j)Qm=DNsT+E3?@SuV^ARs*(SnBHw-Pd zOUM!-DwCRQWr>s}5=ysh$#%zk?)zTv?X;ZtdCvd;JI{0ezw>;a@A?0}|DO$303r^+ zffK-WN)tgHXFt^>002Z703ZQ9fOOoCOrg@f+{j);cM{Q)PV*!CQtwyL_^-Bj2ZGX| z00`J^DF6fL-pT+djAJtNgA|^1=!KZs;}4ZKAvD&>H6k?jIyy#fRykrMM&s^ZS1oi- z3fuJAamt6o>x{609Mtt|PuH<}sUeUwZ7ayd`x1J};BDPWB~^CZYRe2UOT6t!P?4^G zaYk{Pv8E}F4Teo@2k!ROs%Gff8I>J?h6E+2%JP;t+rZUMdlrrkZS2EAz$(Mx@l=Lr z`x#BH$!yY%&Q}payvD*V