按季度,数十,五,二和一的方式拆分“邮票”

时间:2016-03-10 00:13:07

标签: python algorithm

我最近解决了一个问题,即用尽可能少的硬币分割邮票(金钱数量)。该函数获取金额并以尽可能少的硬币返回金额的分割

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)。请一些人解释我出错的原因。提前谢谢。

2 个答案:

答案 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。