输入应付金额与实付金额找零

输入应付金额与实付金额找零

源码

#硬币种类: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=’’)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值