我最近解决了一个问题,即用尽可能少的硬币分割邮票(金钱数量)。该函数获取金额并以尽可能少的硬币返回金额的分割
def stamps(num):
quarter = num / 25
ten = (num % 25) / 10
five = (num % 10) / 5
two = (num % 5) / 2
one = (num % 2)
return quarter, ten, five, two, one
所有硬币都很好但是邮票上有一些错误(68)。它排除了最后一个(1)。请一些人解释我出错的原因。提前谢谢。
答案 0 :(得分:3)
这也打破了6。原因是num % 2
在添加2s后不是正确的剩余量,因为我们使用5更改了奇偶校验。更正的代码是
def stamps(num):
quarter, num = divmod(num, 25)
ten, num = divmod(num, 10)
five, num = divmod(num, 5)
two, num = divmod(num, 2)
one = num # or one, num = divmod(num, 1); you could extract a loop
return quarter, ten, five, two, one
答案 1 :(得分:1)
您将one
设置为等于num/2
的剩余部分。
68是偶数。没有余下的68/2
,因此,您的变量one
将为0。