笔记:udacity计算机导论 - 7/2 求邮资由多张不同面值邮票组成


# Define a procedure, stamps, which takes as its input a positive integer in

# pence and returns the number of 5p, 2p and 1p stamps (p is pence) required 
# to make up that value. The return value should be a tuple of three numbers 
# (that is, your return statement should be followed by the number of 5p,
# the number of 2p, and the nuber of 1p stamps).
#
# Your answer should use as few total stamps as possible by first using as 
# many 5p stamps as possible, then 2 pence stamps and finally 1p stamps as 
# needed to make up the total.
#
# (No fair for USians to just say use a "Forever" stamp and be done with it!)

# 这个题求一定金额的邮资需要多少张5p、2p、1p的邮票组成,要求邮票张数最少。巧用余数,其实该题很简单


def stamps(a):
    s5 = a/5
    s2 = a % 5/2
    s1 = a % 5 % 2
    return (s5,s2,s1)
    # Your code here

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

     上面的代码一大值得注意的是,要求输出的是元组。

   虽然可以用字符相连,输出看起来相似的答案,但因为结果的类型不同,因此是这种做法是错误的


s5,s2,s1 = 1,1,0
a = "("+ str(s5) + "," + str(s2) + "," + str(s1) + ")"
print type(a)


b = (s5,s2,s1)
print type(b)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值