Python “拆分”;邮票「;四分之一,十,五,二和一
我最近解决了一个问题,用尽可能少的硬币分割邮票(以货币表示的金额)。该函数获取金额并返回金额的分割,尽可能少地使用硬币Python “拆分”;邮票「;四分之一,十,五,二和一,python,algorithm,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 所有的硬币都很好,但是
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)个。请解释一下我哪里出了问题,并说明原因。提前感谢。您正在将
one
设置为等于num/2
的剩余部分
68是偶数。
68/2没有余数
,因此变量one
将为0。您正在将one
设置为等于num/2
的余数
68是偶数。
68/2没有余数,因此变量one
将为0。这也将在6中断。原因是添加2秒后,num%2
不是正确的剩余金额,因为我们使用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
这也会在6点中断。原因是添加2秒后,num%2
不是正确的剩余金额,因为我们使用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
不清楚你到底想做什么?什么是邮票?你能给出一些样本输入和输出(在正确或不正确的情况下)它对stamp(6)有效吗?@GarrettR-请检查edits@stefan-不,谢谢。不清楚你到底想做什么?什么是邮票?你能给出一些样本输入和输出(在正确或不正确的情况下)它对stamp(6)有效吗?@GarrettR-请检查edits@stefan-不,谢谢。请你解释一下平价。您的one=num部件工作正常。谢谢。@deep 6,原来的金额是偶数。1,使用5后剩余的数量是奇数。这个贪婪算法应该工作得很好。。。请注意,对于某些面值的邮票(不在问题陈述中),这将中断。请您解释一下平价。您的one=num部件工作正常。谢谢。@deep 6,原来的金额是偶数。1,使用5后剩余的数量是奇数。这个贪婪算法应该工作得很好。。。值得注意的是,某些面值的邮票(不在问题陈述中)会出现这种情况