摘要:项目需要,将一些整数转为汉字字符串,搜索了一下大家基本都是自己写一下函数转换,参考了帖子在其中速度最快的第三种程序的基础上,自己做了一些改进,让代码更精简并且更快一些。基本思想还是先将整数字符串化后转为列表,然后进行汉字字符的替换。
项目需要,将一些整数转为汉字字符串,搜索了一下大家基本都是自己写一下函数转换,参考了帖子:https://blog.csdn.net/PlusCha...;在其中速度最快的第三种程序的基础上,自己做了一些改进,让代码更精简并且更快一些。
基本思想还是先将整数字符串化后转为列表,然后进行汉字字符的替换。再根据汉语语法结构加上单位,以及把多余的零和一(例如“一十二”中的“一”)去掉。代码如下:
# 亿位以下的自然数 def num2Chinese(d): if 100000000 > d > 0: num = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"] kin = ["十", "百", "千", "万"] num_str = list(str(d)) num_str.reverse() Chinese_str = "" for index, i in enumerate(num_str): if index!=0: if i != "0": Chinese_str = num[int(i)] + kin[(index%4)-1] + Chinese_str elif Chinese_str: if index==4 : if Chinese_str[0]!="零": Chinese_str = kin[3] + "零" + Chinese_str else: Chinese_str = kin[3] + Chinese_str if not(Chinese_str[0] in ["零", "万"] and i=="0"): Chinese_str = num[int(i)] + Chinese_str else: if i != "0": Chinese_str = num[int(i)] + Chinese_str if Chinese_str[:2] == "一十": Chinese_str = Chinese_str[1:] return Chinese_str
github地址:https://github.com/Pengyiqing...
转换的过程思路如下:将数字列表化后倒置,即先从个位开始分析,个位上只需要考虑该位是否为零,为零则汉字字符无需声明。从十位开始,既要考虑加相应单位(好在亿以下的算是两次【十、百、千】的循环,可以合并判断,如果该位是【零】,根据已经生成的字符串的第一个是否是【零】要判断是否要加上。循环之间用【万】相连,【万】的情况就更复杂一些,因为【万】字前面不加零,所以再加多带带判断即可。
在本人电脑上进行测试,参考例子里最快的那个代码,转化1至9999999的运行时间为73秒。而上面那个优化后的代码,运行时间为48秒。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42761.html
摘要:根据有效范围作用域分为全局变量和局部变量。类型以开头标识类型以开头标识类型以进制的字节码表示,实际上是一个字节串,回应了它的另一个名字。 < 返回索引页 基本语法 Hello World 代码注释 关键字 数据类型 变量、常量 变量 变量赋值 变量命名 变量的作用域 常量 字符串与编码 字符转义 字符编码 字符串操作 运算符与表达式 运算符 表达式 ...
摘要:验证是否含有等字符只能输入汉字验证地址验证验证电话号码正确格式为,,,,,。验证身份证号位或位数字验证一年的个月正确格式为和验证一个月的天正确格式为和。 一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字:^d{m,n}$ 5 零和非零开头的数字:^(0|1-9*)$ 6 非零开头的最多带两位小数的数字...
摘要:验证是否含有等字符验证汉字验证地址验证验证电话号码正确格式为,,,,,。验证身份证号位或位数字验证一年的个月正确格式为和验证一个月的天正确格式为和。 http://blog.csdn.net/hebbely/...;http://www.cnblogs.com/hustsk... 验证数字:^[0-9]*$ 验证n位的数字:^d{n}$ 验证至少n位数字:^d{n,}$ 验证m-...
阅读 1840·2023-04-26 02:46
阅读 1981·2021-11-25 09:43
阅读 1111·2021-09-29 09:35
阅读 2051·2019-08-30 15:56
阅读 3406·2019-08-30 15:54
阅读 2614·2019-08-29 16:35
阅读 3075·2019-08-29 15:25
阅读 3262·2019-08-29 14:01