Python Geldbetrag Umwandler?
Guten Tag liebe Community,
Ich bin relativ neu mit Python-Programmen und bräuchte Hilfe bei einer kleinen Aufgabe. Einzugeben ist ein Geldbetrag (ein Euro), dieser soll das in Form von Scheinen und Münzen ausgegeben werden (z.B. 1 mal 500€, 1 mal 200€, 3 mal 100€ usw. bis 1 Cent) Könnte mir dabei jemand helfen wie ich das tun soll bzw Codebeispiele angeben?
Danke im Vorraus
3 Antworten
Achja, schöne Übungaufgabe für einen Greedyalgorithmus.
Beobachtung: Jeder nächstkleinere Geldwert ist <= 1/2 des größeren.
Hieraus ergibt sich zwingend, daß ich jeweils den größten Gelwerte <= dem aktuellen nutze, bis es nicht mehr geht, danach wechsle wich auf den Folgebetrag, der wieder in die Restsumme passt.
Destranix hat Dit sogar Pseudocode für Deine Übungsaufgabe geliefert, habe es nur überflogen, sieht soweit richtig aus, allerdings etwas umständlich, ich würde über die Gelwerte iterieren und das wars auch schon. Eine Funktion wie divmod() ist praktisch.
Aber du willst es ja mit möglichst wenigen scheinen und Münzen ausgeben, oder? Dann würde das Programm ja bei 500€ einen 500€ Schein ausgeben, oder nicht?
Exakt aber auch 0 mal 200€, 0 mal 100€, 0 mal 50€ und so weiter bis 0 mal 1 Cent
Das funktioniert beim Euro glücklicherweise mit einem sogenannten gierigen Algorithmus.
Du wählst immer den größten Schein/die größte Münze, die kleiner gelich dem noch auszuzahlendem Geldbetrag ist. Diese fügst du der Ausgabemenge hinzu und ziehst den Wert vom noch auszuzahlendem Geldbetrag ab.
Das widerholst du, bis der noch auszuzahlende Geldbetrag = 0 ist.
Pseudocode:
int[] Münzwerte = {50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1};//Münzwerte in ct
int auszuzahlenderBetrag;//Extren bereitgestellt
int[] ausgabemenge;
while(auszuzahlenderBetrag != 0){
for(int i=0;i<Münzwerte.length;++i){
if(Münzwerte[i]>=auszuzahlenderBetrag){
ausgabemenge.push(Münzwerte[i]);
auszuzahlenderBetrag -= Münzwerte[i];
break;
}
}
}