assignments added
parent
75570d4139
commit
9296c1b482
|
|
@ -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}")
|
||||||
|
|
@ -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.
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
def gehalt(name):
|
||||||
|
# Komplexe Berechnung
|
||||||
|
time.sleep(3)
|
||||||
|
return 3000
|
||||||
|
|
@ -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.
|
|
@ -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")
|
|
||||||
Loading…
Reference in New Issue