CS50 pset6 // cash.py // 未显示所需的正确硬币数量

CS50 pset6 // cash.py // Not Showing The Proper amount of coins needed

我一直在尝试解决此问题,但在任务中,对于 pset6,它表示您需要使用某些值测试您编写的代码,它对其中一些有效,但对其余部分无效我不知道为什么。

所以下图是我需要尝试的值,我编写的代码适用于前 3 个输入,但在 0.15 之后,1.60、23 和 4.2 等值不起作用我不确定为什么

from cs50 import get_float

coin_count =0
change = get_float("Enter Change Amount: ")
total_amount = round(change * 100);
coin_amounts = [25,10,5,1]

while change<=0:
    change = get_float("Enter Change Amount: ")

while total_amount > 0:
    for i in coin_amounts:
        if total_amount >=i:
            total_amount  -= i
            coin_count+=1

print(str(coin_count) + " coins");

完成逻辑。

假设您从 1.6 (160) 开始。

160 > 25 所以去掉 25

135 > 10 所以删除 10

125 > 5 所以去掉 5

120 > 1 所以删除 1

119 > 25 所以去掉 25

看到问题了吗?

当你得到更大的数字时,先删除 10,然后删除 5,然后删除 25,然后再删除 10,这意味着你离开了 rails - 这些 [10 10 5] 可能是单个 25。 您需要尽可能多地删除 25,然后再删除所有 10,然后删除所有 5,剩下的必须是 1。