58 lines
1.9 KiB
Python
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")
|