Noah Gift over on O’Reilly OnLamp Blog has an article on building a greedy coin changer. That is, given a value, say 71 cents, calculate the fewest coins needed to make the amount. He had listed a number of solutions, but I felt I could do it a bit more pythonic.
#!/usr/bin/env python
"""implement a greedy coin changer, returning the
fewest coins to make the change requested."""
#coin_list can be expanded to include silver dollars
# and 50 cent pieces by just expanding the coin list
# to [100,50,25,10,5,1] the reulting answer
#structure will modify itself to reflect
coin_list = [25,10,5,1]
change_requested = .71
remaining = change_requested * 100
change_returned = [] #result structure
for coin in coin_list:
num_coins,remaining = divmod(remaining,coin)
change_returned.append(int(num_coins))
print change_returned
print remaining
The benefits of this version, are no conditional logic is needed, the coin structure can be modified and the answer will modify itself accordingly.
number of disillusioned developers of other languages in to Pythonistas. There have been lots of interesting comments floating in the blogosphere about what this could mean.