Python - Programm das Münzen und Scheine zählt?

3 Antworten

Dein Problem wird hier erklärt:

https://www.youtube.com/watch?v=PZRI1IfStY0

Führe mal in Python aus:

print(0.3-0.2)

Das Ergebnis wird dich vielleicht erstaunen.

...

print(round(0.3-0.2,2)) macht da eher das was du möchtest.

Außerdem würde ich statt exit() break benutzen, um einfach aus der while Schleife zu springen. Hoffe ich konnte helfen.

Gamelgandalf 
Fragesteller
 10.02.2018, 21:29

Ok danke, jetzt versteh ich aufjedenfall wenigstens das Problem :D.

Jetzt muss ich nur leider irgendwie einen komplett neuen Lösungsansatz finden :C da ich mich mit greedy algorithmen bisher noch nie auseinander gesetzt habe.

0
ChePhyMa  10.02.2018, 21:37
@Gamelgandalf

Es gibt sicherlich elegantere Möglichkeiten...

Aber wenn du einfach nur einen quick fix für deinen Algorithmus willst, dann schreibe einfach immer:

Betrag = round( Betrag - 0.1 , 2 )

Damit bekommst du einen auf 2 Nachkommastellen gerundeten Wert.

0
regex9  11.02.2018, 15:58
Außerdem würde ich statt exit() break benutzen, um einfach aus der while Schleife zu springen.

Wozu nochmal unnötig in den Kontext springen, wenn das komplette Programm beendet werden soll?

0
ChePhyMa  11.02.2018, 16:37
@regex9

Unnötig das Programm zu crashen, wenn man doch einfach "breaken" kann und das Programm normal beendet wird. Vorgeschlagen habe ich es aber, weil break die Endlosschleifen behoben hat (weiß nicht genau wieso). Darüber hinaus ist es meines Wissens nach good practice sys.exit() zu verwenden statt exit(), wenn man das Programm eben doch direkt beenden möchte.

Aber trotz all dem, einfach nur exit() sollte in der Theorie eigentlich auch funktionieren.

0

Erstmal der Code is so naja xD

zweitens der Algorithmus den du nutzt nennt sich Greedy. (Größtes zuerst)

drittens. Wenn es im Cent Bereich Fehler gibt, wär vielleicht der Code für den Cent Bereich wichtig...

Gamelgandalf 
Fragesteller
 10.02.2018, 18:21

Erstmal Danke für die schnelle Antwort :D.

Ja ich weiß das der Code nicht so bombe ist :D, aber ich bin noch ein ziehmlicher Programmieranfänger und ich bin schon froh drüber wenn ich das Programm überhaupt erstmal irgendwie zum laufen kriege :).

Und ja sorry hier ist noch der Code für den Cent Bereich, ist aber im Grunde das selbe:

    elif Betrag >= 1:

        Betrag = Betrag - 1

        counter = counter +1

    elif Betrag >= 0.5:

        Betrag = Betrag - 0.5

        counter = counter +1

    elif Betrag >= 0.2:

        Betrag = Betrag - 0.2

        counter = counter +1

    elif Betrag >= 0.1:

        Betrag = Betrag - 0.1

        counter = counter +1

    elif Betrag >= 0.05:

        Betrag = Betrag - 0.05

        counter = counter +1

    elif Betrag >= 0.02:

        Betrag = Betrag - 0.02

        counter = counter +1

    elif Betrag >= 0.01:

        Betrag = Betrag - 0.01

        counter = counter +1

    elif Betrag < 0.01 and Betrag >0:

        print "Der Betrag geht nicht"

        exit ()

    elif Betrag < 0:

        print "Der Betrag geht nicht"

        exit ()

0

Danke nochmal an alle die geantwortet haben :D.

Hab die Float Ungenauigkeit jetzt umgangen indem ich den eingegebenen Wert *100 nehme, also aus € Cents mache und diesen Wert dann nochmal Runde.

Damit konnte das Programm dann ohne Probleme weiter rechnen.