匿名用户
1级
2017-10-19 回答
'''
现在你有125元, 那么首先你需要确定最大面额, 100-50-20-....
依次从大到小查找, 并做整除运算(python3.x中整除是//)
125 // 100 = 1
(125 - 100 * 1) // 50 = 0
(125 - 100 * 1 - 50 * 0) // 20 = 1
...
就是按照面额从大到小对余额做整除
如果你学过函数的话, 请看下面的函数
'''
def f(money, value=(100, 50, 20, 10, 5, 1)):
# 构建结果列表, 最后多一个元素存储无法找零的数额
d = [0] * (len(value) + 1)
for i in range(len(value)):
if money == 0:
return d
if money > value[i]:
d[i] = money // value[i]
money %= value[i]
# 最后剩余的金额大于最小的面额, 即无法找零的金额
if money > 0:
d[-1] = money
return d
# 打印结果函数
def display(d, value=(100, 50, 20, 10, 5, 1)):
for i in range(len(value)):
if d[i] != 0:
print("{}元 {}张".format(value[i], d[i]))
if d[-1] != 0:
print("无法找零{}元".format(d[-1]))
if __name__ == '__main__':
value = (100, 50, 20, 10, 5, 1)
d = f(1234.5, value)
display(d, value)
'''
上面的函数更灵活, 可以根据设定的面额进行处理, 而不需要大规模修改代码
上面的结果为
100元 12.0张
20元 1.0张
10元 1.0张
1元 4.0张
无法找零0.5元
突然有一天, 20和10元的钞票没了, 这时只需修改value = (100, 50, 5, 1)
结果
100元 12.0张
5元 6.0张
1元 4.0张
无法找零0.5元
'''