python-3.x - 用户口袋硬币支付
问题描述
我正在尝试用 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
解决方案
推荐阅读
- javascript - i18n 如何在 javascript 中翻译文本
- vba - VBA - 帮助调试出错的复制/粘贴
- ruby - Different Ways of Namespacing in Ruby
- javascript - 在没有 jquery 的 javascript 中添加和删除类
- html - 如何在标题中移动图像?
- java - 为什么JAVA 10中的var不能初始化为null?
- android - 从 ActivityB 我想将 ID 发送到 FragmentA 并更新 FramgentA 中的列表
- java - 一系列相关操作的设计模式
- c - 关于 Stream 和 getchar() 和 fgetc()
- go - 收听高级 Oracle 队列 (AQ)