【发布时间】:2018-08-29 15:09:54
【问题描述】:
这就是我如何回答下面的问题。我该如何更好地解决这个问题?
**
定义一个过程,stamps,它的输入是一个正数 以便士为单位的整数并返回 5p、2p 和 1p 邮票的数量(p 是 便士)来弥补该价值。返回值应该是 三个数字的元组(也就是说,您的 return 语句应该是 其次是5p的数量、2p的数量、1p的数量 邮票)。您的答案应使用尽可能少的总邮票 首先使用尽可能多的 5 便士邮票,然后使用 2 便士邮票和 最后根据需要加盖1便士,补足总。 (对美国人来说不公平 只是说使用“永远”印章并完成它!)
**
这是我的解决方案
def stamps(i):
# Your code here
five = 0
two = 0
one = 0
while i > 0:
if i == 0:
break
if i >= 5:
five = five + 1
i = i - 5
if i == 0:
break
if i < 5 or i == 2:
two = two + 1
i = i - 2
if i == 0:
break
if i < 2 or i == 1:
one = one + 1
i = i - 1
return five,two,one
这是练习中的测试
print stamps(8)
#>>> (1, 1, 1) # one 5p stamp, one 2p stamp and one 1p stamp
print stamps(5)
#>>> (1, 0, 0) # one 5p stamp, no 2p stamps and no 1p stamps
print stamps(29)
#>>> (5, 2, 0) # five 5p stamps, two 2p stamps and no 1p stamps
print stamps(0)
#>>> (0, 0, 0) # no 5p stamps, no 2p stamps and no 1p stamps
【问题讨论】:
-
如果代码有效,那么问题是可能(参考他们的指南)更适合 codereview.stackexchange.com。如果代码不起作用,您需要具体说明预期结果与实际结果的不同之处。
-
好的,谢谢。该代码有效。作为一个新手,只是想知道如何才能更好地编写代码。我会考虑在 codereview.stackexchange.com 上发布它