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 0000000..2d73cac Binary files /dev/null and b/assignments/musterlösungen.zip differ 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")