# 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.