Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Compute Change using as few coins as possible
- def getChange(price, tender):
- coins = [500, 100, 50, 20, 10, 5, 2, 1, 0.5]
- res = [] # This will be a list of coin quantities
- change = 10 * (tender - price) # Multiplying by ten so that I can work with integer arithmetic
- for c in coins:
- rem, change = divmod(change, c * 10) # Multiplying all coinage by 10 (0.5 becomes 5, for integer convenience)
- res.append(rem)
- return [(coins[x], int(res[x])) for x in range(len(coins)) if res[x]]
- purchases = [["Bread", 28, 50], ["Pizza", 62, 100], ["Hamburger", 39.5, 100], ["Stuff", 50, 50]]
- for item, price, tender in purchases:
- print(f"Item: {item}, Price: {price}, Money Tendered: {tender}, Change: {tender-price}, Units: {getChange(price, tender)}")
- # Item: Bread, Price: 28, Money Tendered: 50, Change: 22, Units: [(20, 1), (2, 1)]
- # Item: Pizza, Price: 62, Money Tendered: 100, Change: 38, Units: [(20, 1), (10, 1), (5, 1), (2, 1), (1, 1)]
- # Item: Hamburger, Price: 39.5, Money Tendered: 100, Change: 60.5, Units: [(50, 1), (10, 1), (0.5, 1)]
- # Item: Stuff, Price: 50, Money Tendered: 50, Change: 0, Units: []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement