问题描述
我一直在尝试解决这个问题,但在任务中,对于 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,这意味着你出轨了——那些 [10 10 5] 可能是一个 25。 您需要尽可能多地删除 25 秒,然后删除所有可以删除的 10 秒,然后所有 5 秒和剩下的必须是 1 秒。