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 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 Vw807rt$rB7za#kv5fQ%n^e5_l5w`#U literal 0 HcmV?d00001 diff --git a/assignments/test.py b/assignments/test.py deleted file mode 100644 index 53da95e..0000000 --- a/assignments/test.py +++ /dev/null @@ -1,54 +0,0 @@ -import requests - - -def get_advice_by_id(advice_id): - # Prepare the API endpoint with the given ID - url = f"https://api.adviceslip.com/advice/{advice_id}" - - try: - # Send HTTP GET Request - response = requests.get(url) - - # Check if the request was successful (HTTP Status 200) - if response.status_code == 200: - data = response.json() - - # Extract the advice if it exists in the JSON payload - if 'slip' in data: - advice_text = data['slip']['advice'] - print(f"\n[Advice #{advice_id}]:") - print(f"\"{advice_text}\"\n") - else: - print( - f"\n[Warning]: Could not find advice with ID {advice_id}.\n") - - else: - print( - f"\n[Error]: Server connection failed. Status Code: {response.status_code}\n") - - # Handle network connection exceptions - except requests.exceptions.RequestException as e: - print(f"\n[Error]: Network problem occurred: {e}\n") - - -# Main execution block -if __name__ == "__main__": - print("--- Advice Fetcher ---") - print("Type 'exit' to quit the application.\n") - - while True: - user_input = input("-> Enter advice ID (e.g., 10): ") - - # Exit condition - if user_input.lower() == 'exit': - print("Goodbye!") - break - - # Validate if the input is a number - if user_input.isdigit(): - get_advice_by_id(user_input) - else: - print("[Warning]: Please enter a valid number only!\n") - print("[Warning]: Please enter a valid number only!\n") - print("[Warning]: Please enter a valid number only!\n") - print("dafa")