Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_amt_from_user_and_check_format():
- while True:
- print("Enter an amount of money in dollars and/or cents -- 234 or 234.56 or 0.56 or .56 or .09")
- print("The amount must be less than $10,000,000,000,000 (ten trillion dollars)")
- try:
- money = input("Amount > ")
- print()
- money = money.lstrip('$')
- money = float(money)
- if money >= 10000000000000:
- print("That's too large an amount to compute.")
- continue
- if money == 0:
- print("You entered a zero amount")
- continue
- money = str(money)
- dollars = money.partition('.')[0]
- cents = money.partition('.')[2]
- if len(cents) == 1:
- cents += '0'
- elif len(cents) > 2:
- print('Incorrect format: cents must be in 2 digits.')
- continue
- money = dollars + '.' + cents
- dollars, cents = int(dollars), int(cents)
- return money, dollars, cents
- except ValueError:
- print('Incorrect format')
- def process_dollars_to_bills(dollars):
- if dollars == 0:
- return [], 0
- bills_value_list = [100, 50, 20, 10, 5, 1]
- bills_denomination_singular_list = ['hundred', 'fifty', 'twenty', 'ten', 'five', 'one']
- bills_denomination_plural_list = ['hundreds', 'fifties', 'twenties', 'tens', 'fives', 'ones']
- bills_count = 0
- bills_list = []
- for idx, value in enumerate(bills_value_list):
- if dollars/value >= 1:
- bills_count += int(dollars/value)
- if int(dollars/value) >= 2:
- bills_list.append((int(dollars/value), bills_denomination_plural_list[idx]))
- else:
- bills_list.append((int(dollars/value), bills_denomination_singular_list[idx]))
- dollars -= int(dollars/value) * bills_value_list[idx]
- if dollars == 0:
- return bills_list, bills_count
- def process_cents_to_coins(cents):
- if cents == 0:
- return [], 0
- coins_value_list = [50, 25, 10, 5, 1]
- coins_denomination_singular_list = ['half-dollar', 'quarter', 'dime', 'nickel', 'penny']
- coins_denomination_plural_list = ['half-dollars', 'quarters', 'dimes', 'nickels', 'pennies']
- coins_count = 0
- coins_list = []
- for idx, value in enumerate(coins_value_list):
- if cents/value >= 1:
- coins_count += int(cents/value)
- if int(cents/value) >= 2:
- coins_list.append((int(cents/value), coins_denomination_plural_list[idx]))
- else:
- coins_list.append((int(cents/value), coins_denomination_singular_list[idx]))
- cents -= int(cents/value) * coins_value_list[idx]
- if cents == 0:
- return coins_list, coins_count
- def process_coins_and_bills_lists_and_print(bills_list, coins_list, money):
- coins_bills_list = bills_list+coins_list
- print("money = $", money, ' =', sep ='', end='')
- for x in coins_bills_list[:-1]:
- print(' ', x[0], ' ', x[1], ',', sep='', end='')
- print(' ', coins_bills_list[-1][0], ' ', coins_bills_list[-1][1], sep='')
- def print_number_of_bills_and_coins(bills_count, coins_count):
- print("The number of bills and coins =", bills_count + coins_count)
- def main():
- money, dollars, cents = get_amt_from_user_and_check_format()
- bills_list, bills_count = process_dollars_to_bills(dollars)
- coins_list, coins_count = process_cents_to_coins(cents)
- process_coins_and_bills_lists_and_print(bills_list, coins_list, money)
- print_number_of_bills_and_coins(bills_count, coins_count)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment