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
J.....L - #naukaprogramowania #python mam tutaj program, który symuluje działanie aut...

źródło: comment_BducSzGAMjga2gsB5GKT7vXlCmnZLEyu.jpg

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@JungleJamPL: zainstaluj flake8 i black. Sformatuj kod blackiem, popraw błędy z lintera i wrzuć jeszcze raz.

Na przyszłość warto przelecieć sobie w kilka minut PEP8 - styleguide pythona.

Nie mieszaj polskiego z angielskim.

Niestety ale tego kodu dosłownie nie da się przeczytać xD
  • Odpowiedz