把一个用阿拉伯数字表示的正整数转换成汉字大写表示
来源:互联网 发布:氵淘宝网天猫商城 编辑:程序博客网 时间:2024/04/28 05:20
一个面试题,考查面试者的逻辑思维能力,考虑的问题很多,把一个用阿拉伯数字表示的正整数转换成汉字大写表示
这里代码没有考虑非法输入,但如果是面试。最好跟面试官交流清楚,展现你考虑问题全面,写出的代码鲁棒性强
比如:输入的数带符号,输入的数不是整数,是小数,是负数,或者压根就不是数值,或者是空值等等
主要功能为:比如1201001 转换成:壹佰贰拾万壹仟零壹
1200000 转换成:壹佰贰拾万
下面上代码:
#第一步:按4位4位的分开#第二步:对分开的每一个对象汉字化#第三步:把每个分开的list拼接起来def NumberToChinese(data): Adict = {1:u'', 2:u'万', 3:u'亿', 4:'兆'} cdata = '%d' %data length = len(cdata) result = u'' numberOfSplit = SplitNumber(cdata) lenOfSplit = len(numberOfSplit) for i in range(lenOfSplit): result = result + ToChinese(numberOfSplit[i]) + Adict[lenOfSplit - i] return resultdef SplitNumber(cdata): length = len(cdata) g = length % 4 csdata = [] if g > 0: csdata.append(cdata[:g]) k = g while k < length: csdata.append(cdata[k:k+4]) k = k + 4 return csdatadef ToChinese(cdata): length = len(cdata) lk = length result = u'' Bdict = {0:u'零', 1:u'壹', 2:u'贰', 3:u'叁', 4:u'肆', 5:u'伍', 6:u'陆', 7:u'柒', 8:u'捌', 9:u'玖'} Cdict = {1:u'', 2:u'拾', 3:u'佰', 4:u'仟'} for i in range(length): #好吧,早上一来就想通了,下面这个if语句就实现了关键的逻辑 #就是对于已经分开的数字,如果开始有0,有一个0,有多个0,同样中间也一样, #还有末尾有0怎么处理 if int(cdata[i]) == 0: if i == length - 1 or (i < length -1 and int(cdata[i+1]) == 0): result = result else: result = result + Bdict[int(cdata[i])] else: result = result + Bdict[int(cdata[i])] + Cdict[lk] lk = lk - 1 return resultdata = 1201001print NumberToChinese(data)
阅读全文
0 0
- 把一个用阿拉伯数字表示的正整数转换成汉字大写表示
- 将阿拉伯数字表示的货币数值转换成以中文大写表示的货币数值
- 能将人民币金额从阿拉伯数字转换为大写汉字表示
- 把阿拉伯数字转换成汉字
- 把中文表示的数字转成阿拉伯数字
- 把阿拉伯数字转换为大写汉字[对应金额]
- JavaScript把阿拉伯数字的金额转换成大写金额
- 阿拉伯数字表示的数字转换成中文习惯读法
- 阿拉伯数字转换为大写汉字
- 转换人民币大小金额(阿拉伯数字表示的RMB变成汉字RMB)
- 将一个正整数N用二进制表示并转换为一个String类型的值S
- 一个将阿拉伯数字转换成中文大写的算法[C#]
- 把阿拉伯数字转换为大写
- 金额转换,阿拉伯数字的金额转换成中国传统大写汉字的形式
- 将输入的阿拉伯数字转换的汉字的大写输出
- 将输入的阿拉伯数字转换的汉字的大写输出
- 正整数转换成Excel表示法
- 把正整数n表示成若干个不同的正整数的和,求积的最大值
- 强大的图表制作,前端数据可视化,echarts
- MA8601替代FE1.1的优势|HUB方案|旺久一级代理|MA8601现货|MA8601方案
- 腾讯超级会员开通记
- Scikit-Learn各算法详细参数速查手册(中文)
- 如何读一个完整的大数据
- 把一个用阿拉伯数字表示的正整数转换成汉字大写表示
- 小米云的手机数据备份和恢复数据使用教程
- make: *** [ssh2.lo] Error 1
- 虚拟机网络配置
- Exception in thread ""http-bio-80"exec-1" java.lang.OutOfMemoryError: PermGen s解决方案
- 网站需要做伪静态页面吗?
- Annoying experience with pygal
- 重定向和转发
- js函数注释规范