"""Bepaal voor alle bedragen in het opgegeven tekstbestand een minimale gepaste betaling als lijst van munten. """ ## Definieer constanten munten = [ 200, 100, 50, 20, 10, 5, 2, 1 ] # munten in dalende volgorde ## Definieer routines def openTekstbestand ( ) : """Vraag naam van invoerbestand op en open het voor lezen via inp Pre: True Post: inp is geopend voor lezen, de naam ervan is opgevraagd via standaard invoer, de leeskop staat vooraan """ global inp bestandsnaam = raw_input ( 'Geef naam van tekstbestand met bedragen: ' ) inp = file ( bestandsnaam, 'r' ) #@ inp is geopend voor lezen def verwerkTekstbestand ( ) : """Verwerk alle regels uit tekstbestand inp Pre: inp is gekoppeld aan tekstbestand geopend voor lezen; de leeskop in inp staat vooraan Post: voor alle bedragen in inp is een minimale betaling afgedrukt; de leeskop in inp staat achteraan """ global bedrag for regel in inp : # print repr ( regel ) # alleen voor foutendiagnose bedrag = eval ( regel ) # het bedrag op de regel print '%3d:' % bedrag, bepaalMinimaleBetaling ( ) ## Schrijf minimale betaling print betaling def bepaalMinimaleBetaling ( ) : """Bepaal minimale betaling van bedrag Pre: munten is lijst van muntsoorten, dalend gesorteerd bedrag is geheel getal met 0 <= bedrag <= 500 Post: betaling is minimale betaling van bedrag met munten """ global betaling betaling = [ ] # reeds gevonden deel van de betaling restbedrag = bedrag # resterende te passen bedrag #@ inv: sum(betaling) + restbedrag = bedrag for munt in munten : while restbedrag >= munt : betaling.append ( munt ) restbedrag = restbedrag - munt assert restbedrag == 0 # dus sum(betaling) = bedrag ## Begin van het programma opgebouwd uit de routines openTekstbestand ( ) verwerkTekstbestand ( ) ## Einde