我用 Python 写了一个简单的零钱计算器来练习,我遇到了一个问题。这是我的代码:
amounts = (100, 50, 20, 10, 5, 2, 1, 0.25, 0.10, 0.05, 0.01)
def get_change(full_amount):
final_change = []
for amount in amounts:
number = 0
while full_amount >= amount:
if (full_amount < 0.50 and full_amount > 0.10 and amount == 0.25): break
number += 1
full_amount -= amount
final_change.append(number)
return final_change
假设我输入 2.40。它从 2.40 到 0.40(一个 tonie),然后它应该去,这样做if (full_amount < 0.50 and full_amount > 0.10 and amount == 0.25): break
会跳过 0.25 并以四角钱结束。然而,实际上,它最终得到了 3 个硬币、1 个镍币和只有 4 个便士。当剩余数量等于被测试的数量时,问题似乎出现了(剩余 0.10 美分,数量为 0.10 美分 - 与镍相同)