Python数字金额转汉字读法

本文将使用Python把数字金额转换成汉语读法

代码如下:

"""
六十万零四千 604000
六十八万 680000
七万八千 78000
一百万零四百 1000400
"""
dict1 = {1: '壹', 2: '贰', 3: '叁', 4: '肆', 5: '伍',6: '陆', 7: '柒', 8: '捌', 9: '玖', 0: '零'}
dict2 = {1: '元', 2: '拾', 3: '佰', 4: '仟', 5: '万',6: '拾', 7: '佰', 8: '仟', 9: '亿', 10: '拾',11: '佰', 12: '仟', 13: '角', 14: '分', 15: '整'}
money = '' # 整个输出的过程就是个字符串拼接的过程
flag = False # 十百千的零不用管,flag用来处理0
flag2 = False # 判断是否需要填加大写零
isint = False # 是否是整数
count = 0 # 适用于整数
count2 = 12 # 适用于小数
num = input("小盆友,请输入要转换的数字金额:")
if num == '0':
    print('0元整')
else:
    aa = num.split('.') # split分出来的是列表,aa就变成了有两个元素的列表
    bb = list(str(aa[:1])[2:-2]) # bb存储的数字金额的整数部分,列表转成字符再转列表
    cc = list(str(aa[1:])[2:-2]) # cc存储的是数字金额的小数部分
    if len(cc) <= 0: # 判断输入的数字金额是否是整数或是小数,定下标签
        isint = True # 的确是整数
    else:
        isint = False # 有小数部分

    for i in reversed(bb): # reversed函数返回一个翻转的迭代器 123456-->54321从个位开始处理
        count += 1 # count用来选择后面具体是哪一个对应的称呼
        if int(i) == 0: # 如果当前碰到的数字是0
            if flag == True: 
                if count != 5: # 万以下的直接念 不涉及念零的问题,比如说4000四千,和0没关
                    continue # 跳过当前一层循环 来到下一个for循环
                else: # 超过了万,就得把万加进去
                    money = dict2[count] + money #把万加进去
            else: # flag = False的情况,已经超出了万数
                if flag2 == False: # 如果数字不需要读零,直接加入
                    money = dict2[count] + money
                else: # 数字不是结尾是零就得念出来
                    money = '零' + money
            flag = True # 把0处理掉之后置flag为True,第一个0不用管,所以最开始没啥事
        else: # i不是零的情况
            flag = False # 把flag回置成False
            flag2 = True # 以防下一次碰到零,下一次碰到0的时候,就得考虑读零的事情了
            money = dict1[int(i)] + dict2[count] + money
    for i in cc: # 处理小数部分,在dict2的后半段,所以定义count2来找后面的分,角
        count2 += 1
        money = money + dict1[int(i)] + dict2[count2]
    if isint == True: # 整数金额数加个整
        money += '整'

    print(money)


运行结果展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
试验过好多数据,还没发现漏网之鱼,如果出现BUG还请指出
此外限于作者水平有限,注释的时候杂乱无章,如有不当之处还请批评指正!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值