数字转人民币读法

数字转人民币读法,现支持整数部分12位的数字进行转化,当然如果需要变大的话,可以很方便的进行改写:
首先是需要的汉字列表:

han_list = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
unit_list = ["十","百","千"]
frac_list = ["角","分"]

其次是将整数部分与小数部分分隔开,然后再分两部分进行处理。
分割函数:

def divide(num):
    integer = int(num)
    fraction = round((num - integer) * 100)
    return (str(integer),str(fraction))

然后进行的是对整数部分进行处理,整数部分处理分为两部分,首先是将整数部分的数字全部更换为汉字,其次是为汉字字符串加上单位,实现这两个步骤我分为了两个函数:

def int2han(num_str):
    result = ""
    for i in range(len(num_str)):
        num = int(num_str[i])
        if i != len(num_str)-1 and num != 0:
            result = result + han_list[num] + unit_list[len(num_str) -2 -i]
        else:
            result = result + han_list[num]
    return result
def inttohan(num_str):
    num_len = len(num_str)
    if num_len > 12:
        print('数字太大')
        return
    elif len(num_str) > 8:
        return int2han(num_str[:-8]).rstrip('零') + '亿' + int2han(num_str[-8:-4]).rstrip('零') + "万" + int2han(num_str[-4:])
    elif len(num_str) > 4:
        return int2han(num_str[:-4]).rstrip('零') + "万" + int2han(num_str[-4:]).rstrip('零')
    else:
        return int2han(num_str)

现在处理小数部分,小数部分我只保留了两位,也就是“角”和“分”,所以小数部分的处理就简化了一步:

def frac_han(frac_str):
    result = ""
    for i in range(len(frac_str)):
        num = int(frac_str[i])
        result += han_list[num] + frac_list[len(frac_str)-2-i]
    return result

主函数:

num = float(input("请输入一个浮点数:"))
integer,fraction = divide(num)
han_int = inttohan(integer)
han_frac = frac_han(fraction)
print(han_int + "点" + han_frac)

这样就可以初步实现数字转人民币读法:
在这里插入图片描述
这个程序可能比较需要时间取理解一下的部分可能就是:数字转化为汉字的部分,就是简单的对字符串,循环进行操作。
本篇文章若有不准确的地方,或者您有更好的意见或者建议,欢迎留言。

你可能感兴趣的:(基础知识)