Files
Lernfeld-5/KassenSystem.py
T
2026-04-28 08:08:40 +02:00

58 lines
1.9 KiB
Python

def wechselgeld_rechner(preis, gezahlt):
# Überprüfen, ob der gezahlte Betrag kleiner als der Preis ist
# In diesem Fall ist kein Wechselgeld möglich
if gezahlt < preis:
return "Der Betrag, der gegeben wurde, ist geringer als der Preis."
# Berechnung des Wechselgeldes (auf zwei Nachkommastellen gerundet)
wechselgeld = round(gezahlt - preis, 2)
# Dictionary mit allen verfügbaren Geldstücken/Scheinen und ihrer anfänglichen Anzahl (0)
geldwerte = {
50: 0,
20: 0,
10: 0,
5: 0,
2: 0,
1: 0,
0.5: 0,
0.2: 0,
0.1: 0,
0.05: 0,
0.02: 0,
0.01: 0
}
# Berechnung, wie viele Stücke eines jeden Geldwerts benötigt werden
for wert in sorted(geldwerte.keys(), reverse=True):
# Prüfen, ob der aktuelle Geldwert in das verbleibende Wechselgeld passt
if wechselgeld >= wert:
# Anzahl bestimmen durch ganzzahlige Division
anzahl = int(wechselgeld // wert)
geldwerte[wert] = anzahl
# Verbleibendes Wechselgeld reduzieren
wechselgeld -= anzahl * wert
# Nach jeder Berechnung erneut runden, um Fließkommafehler zu vermeiden
wechselgeld = round(wechselgeld, 2)
# Zurückgeben eines Dictionaries, das nur Einträge enthält, die tatsächlich ausgegeben werden
return {k: v for k, v in geldwerte.items() if v > 0}
# Benutzerabfrage für Preis und gezahlten Betrag
preis = float(input("Preis: "))
gezahlt = float(input("Gezahlt: "))
# Aufruf der Funktion
wechselgeld = wechselgeld_rechner(preis, gezahlt)
# Ausgabe des gesamten Wechselgeldes
print(f"Wechselgeld: {gezahlt - preis:.2f} Euro")
# Ausgabe der einzelnen Geldstücke
print("Ausgegeben in folgenden Werten:")
for wert, anzahl in wechselgeld.items():
if anzahl > 0:
print(f"{anzahl} x {wert:.2f} Euro")