把一个用阿拉伯数字表示的正整数转换成汉字大写表示
一个面试题,考查面试者的逻辑思维能力,考虑的问题很多,把一个用阿拉伯数字表示的正整数转换成汉字大写表示
这里代码没有考虑非法输入,但如果是面试。最好跟面试官交流清楚,展现你考虑问题全面,写出的代码鲁棒性强
比如:输入的数带符号,输入的数不是整数,是小数,是负数,或者压根就不是数值,或者是空值等等
主要功能为:比如1201001 转换成:壹佰贰拾万壹仟零壹
1200000 转换成:壹佰贰拾万
下面上代码:
#第一步:按4位4位的分开
#第二步:对分开的每一个对象汉字化
#第三步:把每个分开的list拼接起来
def NumberToChinese(data):Adict = {1:u'', 2:u'万', 3:u'亿', 4:'兆'}cdata = '%d' %datalength = 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 % 4csdata = []if g > 0:csdata.append(cdata[:g])k = gwhile k < length:csdata.append(cdata[k:k+4])k = k + 4return csdatadef ToChinese(cdata):length = len(cdata)lk = lengthresult = 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 = resultelse:result = result + Bdict[int(cdata[i])]else: result = result + Bdict[int(cdata[i])] + Cdict[lk]lk = lk - 1return resultdata = 1201001
print NumberToChinese(data)
把一个用阿拉伯数字表示的正整数转换成汉字大写表示相关推荐
- php大写数字转换,PHP将阿拉伯数字转换成汉字大写支持小数点
PHP将带有小数点的一串阿拉伯数字转换成汉字大写形式,就像转换人民币大写类似.加入了小数点的处理,只要是一连串的数字,不管是否带有小数点,通过本函数都能完美转换. PHP将阿拉伯数字转换成汉字大写支持 ...
- java数字金额转换成汉字大写
java数字转换成汉字大写.数字转发票上的人民币大写 1.调用方法 NumToCN.number2CNMontrayUnit(zjJE): 2.转换类 import java.math.BigDeci ...
- 人民币金额由阿拉伯数值转换成汉字大写数值的函数
分成四个步骤: 1.数字的转化.阿拉伯数字转换为汉字大写字符 2.整数部分的转化. 分节:四位一组,从个位开始分节 每节转化为汉字大写数值:比如"1234"转化成 "壹仟 ...
- 10以内转大写汉字java_1.输入一个0-10之间的阿拉伯数字,将其转换成中文大写数...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ublic class demo { public static void main(String[] args) { Scanner sc=new Sc ...
- php将阿拉伯数字转换成中文大写,PHP将阿拉伯数字转换成汉字大写支持小数点
第一种 /*function ch_num($num,$mode=true) { $char = array("零","壹","贰",&qu ...
- .net数字转换成汉字大写
public class Num2Rmb { private String[] hanArr={"零","壹","贰","叁&qu ...
- 将数字日期转换成汉字大写日期
function cnDate(enDate) { //用于将"2003-01-14"这种格式的日期更改为"二○○三年一月十四日" var OldYear,Ol ...
- JAVA CP936编码转utf8_对一个目录的文件从cp936转换成utf-8
打开一个文件,确认能够无乱码打开 [xw@localhost work]$ vi NPOSP/src/sjl05.cpp 但是,这里打开的方式是以cp936的编码方式打开的. 编码的选择,记录在~/. ...
- 用递归算法,把任一给定的十进制正整数转换成八进制数输出。
递归算法/函数 [递归]十进制转换成八进制 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 用递归算法,把任一给定的十进制正整数转换成八进制数输出. 输入 输入一个正整数,表 ...
最新文章
- tensorflow tf.is_gpu_available() (判断GPU是否可用)
- phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
- Python通过amqp消息队列协议中的Qpid实现数据通信
- Java基础之Collection和Map
- LeetCode 398. 随机数索引(概率)
- vb 访问远程计算机,vb 连接远程服务器
- 下一代数据备份方式会是DNA吗?
- Nginx 负载均衡和缓存服务实战
- 【综述笔记】Graph Neural Networks in Recommender Systems
- linux apache配置虚拟主机,linux环境apache多端口配置虚拟主机的方法
- 单片机原理及应用程序c语言版题库,单片机原理及应用(C语言版)
- 跟着团子学SAP—SAP LTMC基础教程(物料主数据导入示例)
- google搜索插件
- c语言牛顿法求整数平方根,牛顿法求平方根-编程练习
- Java - Certificate has been revoked
- Win7蓝牙标志不见了, 如何找回?
- java版冒险岛_CMS072 冒险岛ONLINE 国服072版本 JAVA 服务端 - 下载 - 搜珍网
- 会话(gorilla/sessions)
- 后勤管理系统—服务台管理功能
- 读博期间如何发文章?
热门文章
- JAVA语言程序设计教程张席_Java语言程序设计教程
- Failed to start monitoring
- office卸载后无法重装终极解决办法
- 开源C++单元测试框架Google Test介绍
- 举个栗子!Tableau 技巧(116):做一个有趣的锥状柱形图
- iCamera App Kit 使用说明
- SpringBoot整合tkMapper
- 笔记本高分屏字体模糊_4k/1080p屏幕字体模糊怎么办?win10高分屏笔记本字体模糊太小的解决办法...
- 什么是Merkle Tree(默克尔树)
- 地图制作|AI编辑标准地图,制作符合出版需要的地图文件