105 lines
4.2 KiB
Python
105 lines
4.2 KiB
Python
"""
|
||
Kapitel 04: __str__ und Objektlisten – Supermarkt & Warenkorb
|
||
============================================================
|
||
|
||
In dieser Aufgabe erstellst du zwei Klassen: 'Artikel' und 'Warenkorb'.
|
||
"""
|
||
|
||
class Artikel:
|
||
# ==========================================================================
|
||
# TODO 1: Konstruktor für Artikel
|
||
# Parameter: self, name (str), preis (float), anzahl (int, Standardwert 1)
|
||
# Speichere: self.name, self.preis, self.anzahl
|
||
# ==========================================================================
|
||
def __init__(self, name, preis, anzahl=1):
|
||
# Schreibe hier deinen Code für TODO 1:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 2: Methode "gesamtpreis(self)"
|
||
# Gibt den Preis für diesen Artikel multipliziert mit der Anzahl zurück.
|
||
# Beispiel: 3 Äpfel à 0.50€ -> 1.50
|
||
# ==========================================================================
|
||
def gesamtpreis(self):
|
||
# Schreibe hier deinen Code für TODO 2:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 3: Dunder-Methode "__str__(self)"
|
||
# Gibt einen String im folgenden Format zurück:
|
||
# "{anzahl}x {name} (je {preis:.2f} €) = {gesamtpreis:.2f} €"
|
||
#
|
||
# Beispiel:
|
||
# Bei name="Milch", preis=1.29, anzahl=2:
|
||
# -> "2x Milch (je 1.29 €) = 2.58 €"
|
||
# ==========================================================================
|
||
def __str__(self):
|
||
# Schreibe hier deinen Code für TODO 3:
|
||
pass
|
||
|
||
|
||
class Warenkorb:
|
||
# ==========================================================================
|
||
# TODO 4: Konstruktor für Warenkorb
|
||
# Parameter: self
|
||
# Initialisiere: self.artikel_liste als leere Liste []
|
||
# ==========================================================================
|
||
def __init__(self):
|
||
# Schreibe hier deinen Code für TODO 4:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 5: Methode "artikel_hinzufuegen(self, artikel)"
|
||
# Fügt das übergebene Artikel-Objekt an 'self.artikel_liste' an (.append).
|
||
# ==========================================================================
|
||
def artikel_hinzufuegen(self, artikel):
|
||
# Schreibe hier deinen Code für TODO 5:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 6: Methode "gesamtsumme(self)"
|
||
# Berechnet die Summe der Gesamtpreise aller Artikel in self.artikel_liste
|
||
# und gibt diese als float zurück. (Tipp: Schleife oder sum())
|
||
# Bei leerem Warenkorb soll 0.0 zurückgegeben werden.
|
||
# ==========================================================================
|
||
def gesamtsumme(self):
|
||
# Schreibe hier deinen Code für TODO 6:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 7: Methode "bon_text(self)"
|
||
# Erzeugt einen formatierten mehrzeiligen String für den Kassenzettel.
|
||
# Format:
|
||
# --- KASSENZETTEL ---
|
||
# 2x Milch (je 1.29 €) = 2.58 €
|
||
# 1x Brot (je 2.49 €) = 2.49 €
|
||
# --------------------
|
||
# Gesamtsumme: 5.07 €
|
||
#
|
||
# Tipp: Baue eine Liste von Zeilen und verbinde sie mit "\n".join(...)
|
||
# Die Zeilen für die Artikel erhältst du einfach mit str(artikel)!
|
||
# ==========================================================================
|
||
def bon_text(self):
|
||
# Schreibe hier deinen Code für TODO 7:
|
||
pass
|
||
|
||
|
||
# ==============================================================================
|
||
# Hauptprogramm zum Ausprobieren:
|
||
# ==============================================================================
|
||
if __name__ == "__main__":
|
||
print("🛒 --- SUPERMARKT EINKAUF --- 🛒")
|
||
korb = Warenkorb()
|
||
|
||
a1 = Artikel("Milch", 1.29, 2)
|
||
a2 = Artikel("Brot", 2.49, 1)
|
||
a3 = Artikel("Schokolade", 0.99, 3)
|
||
|
||
korb.artikel_hinzufuegen(a1)
|
||
korb.artikel_hinzufuegen(a2)
|
||
korb.artikel_hinzufuegen(a3)
|
||
|
||
if korb.artikel_liste:
|
||
print(korb.bon_text())
|
||
else:
|
||
print("Hinweis: Implementiere die TODOs, um den Kassenbon zu drucken!")
|