我正在編寫一個程序來計算客戶交易的變化,它也會告訴收銀員每個面額有多少交給客戶(儘管它假設無限充滿)。編寫一個python程序來計算給定的交易確切的變化
它似乎都是爲了和工作,除了一些例子,我不知道爲什麼。例如,當I型在$ 5.65作爲應付金額和$ 6.00所給出的量,它計算的變化爲:
1×$ 0.2
1×$ 0.1
2×$ 0.02
這顯然是不正確的。它似乎在跳過一個事實,即它需要退還5美分,而不是2 * 2美分。這裏發生了什麼?
這裏是我的源代碼:
def change():
due = float(raw_input("Amount Due: $"))
paid = float(raw_input("Amount Paid: $"))
change = float(paid - due)
print "\nChange due: $%.2f" % (change)
print "\nHand the customer: "
denom = (20.00, 10.00, 5.00, 2.00, 1.00, 0.50, 0.20, 0.10, 0.05, 0.02, 0.01)
change_due = [" "]*len(denom)
amount = change
while amount > 0:
for i in range(len(denom)):
change_due[i] = int(amount/denom[i])
amount = amount%denom[i]
if change_due[i] > 0:
print "\n" + str(change_due[i]) + " x " + "$" + str(denom[i])
break
change()
注:$符號只是用來因爲我無法弄清楚如何在Python中正確顯示£。所以我在「denom」元組中使用了英鎊。