Python练习提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言一、找零钱系统
原型要求/提示输入和输出示例答案以及思路详解运行结果
前言
本作业是授课型研究生21-22-Introduction to Python选修课作业,较为简单
一、找零钱系统
使用提供的原型编写一个函数,从 0 英镑到 5 英镑找零。 该函数应输出用于找零的每种面额的硬币数量,即 2 英镑、1 英镑、50 便士、20 便士、10 便士、5 便士、2 便士、1 便士。
原型def changeMarker (value): ’’’ function description ’’’ return two_pound , one_pound , p50 , p20 , p10 , p5 , p2 , p1要求/提示
功能行为/属性
• 您的函数必须检查该值是否在(0, 5) 范围内。 如果不是,该函数必须将所有硬币的数量返回 -1。
• 您的函数必须提供最少数量的硬币以换取价值。
value = 6 # if the value is set equal to 6 output = changeMarker(value) print (output) # the outout should be output = (-1, -1, -1, -1, -1, -1, -1, -1)
output = changeMarker ( 2.53 ) print ( output ) # the output should be output = (1, 0, 1, 0, 0, 0, 1, 1)
答案以及思路详解
def changeMarker(value):
'''
function description
'''
if value<=0 or value>=5:#当兑换零钱数目大于5或者小于0(小于0是隐藏条件),则所有值返回-1
two_pound, one_pound, p50, p20, p10, p5, p2, p1 = -1, -1, -1, -1, -1, -1, -1, -1
else:
value = value*100
t = [200,100,50,20,10,5,2,1]
m = [0 for _ in range(len(t))]
for i, money in enumerate(t):
m[i] = int(value // money)
value = round(value%money)#如果不使用round会导致p1取0.99
two_pound, one_pound, p50, p20, p10, p5, p2, p1 = m
return two_pound, one_pound, p50, p20, p10, p5, p2, p1
运行结果



