#!/usr/bin/python3'''num transfer to RMB借鉴了讲义中4位的数字字符串转换成中文的函数优化了小数部分和0的处理,仍旧不够完善'''# 分离整数和小数部分def divIDe(num): intTemp=int(num) fractionTemp = round((num-intTemp)*100) # round()函数 用于四舍五入后取整 return(str(intTemp),str(fractionTemp))HanziList=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]unitList=["十","百","千"]# 将四位数字转为大写汉字def four2Hanzi(intTemp): HanziTemp="" for i in range(len(intTemp)): index=int(intTemp[i]) # 依次遍历数字字符串的每一位数字,为4位数字设计,兼容1-3位 if intTemp[i]!="0" and i!=len(intTemp)-1: # 如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十) HanziTemp+=str(HanziList[index])+unitList[len(intTemp)-2-i] else: HanziTemp+=HanziList[index] return HanziTemp# 将两位小数转为x角x分unitList2=["分","角"]def fraction2Hanzi(fractionTemp): fractionHanziTemp="" if len(fractionTemp)==0: return fractionHanziTemp elif len(fractionTemp)==1: if fractionTemp[0]=="0": return fractionHanziTemp else: return HanziList[int(fractionTemp[0])]+"角" elif len(fractionTemp)==2: index0=int(fractionTemp[0]) index1=int(fractionTemp[1]) if fractionTemp[0]!="0"and fractionTemp[1]!="0": return HanziList[index0]+"角"+HanziList[index1]+"分" elif fractionTemp[0]=="0" and fractionTemp[1]=="0": return fractionHanziTemp elif fractionTemp[0]=="0" and fractionTemp[1]!="0": return HanziList[index1]+"分" elif fractionTemp[0]!="0" and fractionTemp[1]=="0": return HanziList[index0] + "角" else: pass return fractionHanziTemp# 循环比较去重,为重复的0设计def quchong(strHan): strResult = '' strResult += strHan[0] index = 0 for i in range(1, len(strHan)): if strHan[i] != strHan[index]: strResult+=(strHan[i]) index+=1 return strResult# 数字转人民币,对0的处理仍旧不够完善def num2Rmb(): num = float(input("请输入一个浮点数(小数点保留2位): ")) intTemp, fractionTemp = divIDe(num) str_len = len(intTemp) if str_len > 12: print("数值过大,无法转换") return # 如果大于8位,包含单位亿 elif str_len > 8: rmbStr = quchong(four2Hanzi(intTemp[0:-8]))+"亿"+quchong(four2Hanzi(intTemp[-8:-4]))+"万"+quchong(four2Hanzi(intTemp[-4:]))+"元" elif str_len > 4: rmbStr = quchong(four2Hanzi(intTemp[0:-4])) + "万" + quchong(four2Hanzi(intTemp[-4:])) + "元" else: rmbStr = quchong(four2Hanzi(intTemp[-4:])) + "元" rmbStr += fraction2Hanzi(fractionTemp) # 替换一些常用读法 rmbStr = rmbStr.replace('零元','元') rmbStr = rmbStr.replace('零万','万') rmbStr = rmbStr.replace('零亿','亿') rmbStr = rmbStr.replace('亿万','亿') rmbStr = rmbStr.replace('壹十','十') return rmbStrprint(num2Rmb())
总结
以上是内存溢出为你收集整理的疯狂Python讲义Unit4:数字转人民币读法全部内容,希望文章能够帮你解决疯狂Python讲义Unit4:数字转人民币读法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)