pr3-python-sose2026/assignments/aufgaben.md

58 lines
2.5 KiB
Markdown

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