好的,我假设您正在尝试使用多种类型的账单来计算交易的零钱。
问题是,您需要不断记录您还剩下多少零钱要支付。我曾经num_curr_bill
计算过您要支付多少当前账单类型,而您的hef
I 更改为remaining_change
(所以这对我来说意味着什么)以支付剩余的零钱。
a= input('price: ')
b= input('cash paid: ')
coin_bills=[100,50,20,10,5,1,0.5]
if b>=a:
# Calculate total change to pay out, ONCE (so not in the loop)
remaining_change = b-a
for i in coin_bills:
# Find the number of the current bill to pay out
num_curr_bill = remaining_change/i
# Subtract how much you paid out with the current bill from the remaining change
remaining_change -= num_curr_bill * i
# Print the result for the current bill.
print num_curr_bill,'*',i
else:
print 'pay up!'
因此,对于 120 的价格和支付的现金 175,输出为:
price: 120
cash paid: 175
0 * 100
1 * 50
0 * 20
0 * 10
1 * 5
0 * 1
0.0 * 0.5
一张 50 的钞票和一张 5 的钞票加起来是 55,这是正确的变化。
编辑:我会更加谨慎地处理我自己代码中的注释,但我在此处添加它们以进行解释,以便您可以更清楚地了解我的思考过程。
编辑 2:我会考虑删除 coin_bills 中的 0.5 并将 1 替换为 1.0,因为任何小数最终都会是 0.5 的小数。