输入应付金额与实付金额找零
源码
#硬币种类:50,20,10,5,1,0.5,0.1
from decimal import Decimal
def zhao_money(a,b,zhaoqian):
change=b-a
if change > 0:
vallist=[50,20,10,5,1,0.5,0.1]
for i in range(len(vallist)) :
if change>=vallist[i]:
paper=int(change/vallist[i])
zhaoqian.append(str(vallist[i])+":"+str(paper))
change=round(change-vallist[i]*paper,1)
return zhaoqian
if __name__=="__main__":
zhaoqian = []
a=float(input("请输入应付金额:"))
b=float(input("请输入实付金额:"))
print("应找:"+str(b-a)+"元:")
print(zhao_money(a,b,zhaoqian),end=';')
运行结果
修改
其实输入和输出格式并不规范,有待修改
#只修改了主函数为了规范输出格式
if __name__=="__main__":
zhaoqian = []
a=float(input("请输入应付金额:"))
b=float(input("请输入实付金额:"))
print("应找:"+str(b-a)+"元:",end='')
zhao_money(a, b, zhaoqian)
for money in zhaoqian:
print(money,end=';')
#print(str(zhao_money(a,b,zhaoqian)),end=';')
修改结果
遇到的问题
1.python浮点运算精度问题
2.+号连接字符串前后数据类型一致,可以通过强制类型转换
3.总是忘记int类型迭代的格式:for i in range():
4.规范输入输出格式
5.小tip:print输出不换行print( ,end=’’)