数字转人民币读法,现支持整数部分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)
这样就可以初步实现数字转人民币读法:
这个程序可能比较需要时间取理解一下的部分可能就是:数字转化为汉字的部分,就是简单的对字符串,循环进行操作。
本篇文章若有不准确的地方,或者您有更好的意见或者建议,欢迎留言。