Wpis z mikrobloga

#naukaprogramowania #python mam tutaj program, który symuluje działanie automatu z napojami.
Jest funkcja rekurencyjna getReszta(), która bierze jako argument resztę jaką ma do wydania oraz słownik monet, które są w automacie.
funkcja oparta jest o dwie pętle:

pierwsza pętla sprawdza każdą monetę ze słownika czy jest taka sama jak reszta do wydania. jeśli jest moneta taka sama jak nasza reszta, to program zmniejsza skarbiec o tą jedną monetę oraz kończy działanie funkcji wracając do "maina". tutaj niestety pojawił sie problem

druga pętla odpala się jeśli pierwsza nie spełniła swojego warunku, i sprawdza każdą po kolei monetę ze skarbca, i pierwszą największa monetę która mieści się reszcie odejmuje od tej reszty, zmniejsza ilość monet tego typu o jeden, oraz odpala rekurencyjnie funkcję jeszcze raz dla nowej wartości reszty.

zasadniczo gdy w tej pierwszej pętli korzystam z polecenia System RaiseExit to funkcja spełnia swoje zadanie i dobrze wylicza resztę. NIestety gdy próbuję nie konczyć działania całego programu i wrócic z funkcji do "maina" za pomocą polecenia return None bądź return 1 , to niestety ale występuje "unknown behaviour", funkcja odpala się pare razy i odejmuje ze skarbca jakąś dzwiną ilość róznych monet głownie 10 groszówek.

czy spotkał się ktoś z podobną sytuacją ? w języku C zwykle robiło się return 0 i było ok, jak to może wyglądać w Pythonie w tej sytuacji ?

paste bin: https://pastebin.com/cLEcVJp5
Pobierz
źródło: comment_BducSzGAMjga2gsB5GKT7vXlCmnZLEyu.jpg
  • 2