pr3-python-sose2026/assignments/aufgaben.md

2.5 KiB

Aufgaben

Aufgabe 1

List Comprehension

In der Datei list_comprehension ist eine Liste artikel mit Daten von Supermarktartikeln

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:

[("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.