首页 > 解决方案 > 用户口袋硬币支付

问题描述

我正在尝试用 Python3 编写一个程序,提示我们输入要支付的金额,然后输入我们拥有的硬币数量(2 英镑、1 英镑、50 便士、2 便士、10 便士、5 便士、2 便士、1 便士)。如果我们没有设法支付全部金额,它应该在整数列表中返回我们使用了多少特定价值的硬币以及零钱(浮动)。返回列表的前 8 个数字代表应该支付的硬币,使用与输入列表相同的顺序,口袋。返回列表的最后一个数字给出了 android 应该作为零钱取回的金额。所以,如果我们可以支付确切的钱,这将是 0;但是如果口袋里的钱足够了,但我们没有合适的硬币来支付确切的金额,这将是要退还的找零金额。如果可以支付,支付的硬币总额必须是准确的金额。如果无法支付确切的金额,则支付的金额必须是支付费用的最低金额 - 退回的零钱应该尽可能低,理想情况下,我们应该使用尽可能多的硬币支付。

我尝试使用的代码是:

def pay_with_coins_from_pocket( amount, pocket ): #pocket - numbers of coins we have

    number_of_coins = [0,0,0,0,0,0,0,0,0] #number of coins we will use and amount of change
    amount=amount*100 #in pennies
    amount_of_change=0
    values_of_coins = [200, 100, 50, 20, 10, 5, 2, 1]
    number_of_coins_used=0
    money_in_pocket=0
    i=0 # "counter"
    money_in_pocket=pocket[0]*200+pocket[1]*100+pocket[2]*50+pocket[3]*20+pocket[4]*10+pocket[5]*5+pocket[6]*2+pocket[7]*1
    if money_in_pocket<amount:
         print("False")
    else:
       while i<8:
           while (pocket[i]>0 and amount>0): # if it stays, I can't pay 1.62 with 2 pound coin): #and amount>=pocket_at_first):
                if amount-values_of_coins[i]>0:
                    amount=amount-values_of_coins[i]
                else:
                    amount=values_of_coins[i]-amount
                pocket[i]=pocket[i]-1 #one coin from specific pocket was used
                number_of_coins_used=number_of_coins_used+1 #another coin of specific value was used
                number_of_coins[i]=number_of_coins_used #another coin of specific value was used
                amount_of_change=amount
                number_of_coins[8]=amount_of_change/100
       i=i+1

    return number_of_coins 

标签: python-3.xpayment

解决方案


推荐阅读