39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
class MoneyMachine:
|
|
|
|
CURRENCY = "$"
|
|
|
|
COIN_VALUES = {
|
|
"quarters": 0.25,
|
|
"dimes": 0.10,
|
|
"nickles": 0.05,
|
|
"pennies": 0.01
|
|
}
|
|
|
|
def __init__(self):
|
|
self.profit = 0
|
|
self.money_received = 0
|
|
|
|
def report(self):
|
|
"""Prints the current profit"""
|
|
print(f"Money: {self.CURRENCY}{self.profit}")
|
|
|
|
def process_coins(self):
|
|
"""Returns the total calculated from coins inserted."""
|
|
print("Please insert coins.")
|
|
for coin in self.COIN_VALUES:
|
|
self.money_received += int(input(f"How many {coin}?: ")) * self.COIN_VALUES[coin]
|
|
return self.money_received
|
|
|
|
def make_payment(self, cost):
|
|
"""Returns True when payment is accepted, or False if insufficient."""
|
|
self.process_coins()
|
|
if self.money_received >= cost:
|
|
change = round(self.money_received - cost, 2)
|
|
print(f"Here is {self.CURRENCY}{change} in change.")
|
|
self.profit += cost
|
|
self.money_received = 0
|
|
return True
|
|
else:
|
|
print("Sorry that's not enough money. Money refunded.")
|
|
self.money_received = 0
|
|
return False
|