assignments added

main
luay 2026-06-08 16:02:09 +02:00
parent 75570d4139
commit 9296c1b482
7 changed files with 126 additions and 54 deletions

View File

@ -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}")

View File

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

View File

View File

@ -0,0 +1,7 @@
import time
def gehalt(name):
# Komplexe Berechnung
time.sleep(3)
return 3000

View File

@ -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"}
]

Binary file not shown.

View File

@ -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")