一个面试题,考查面试者的逻辑思维能力,考虑的问题很多,把一个用阿拉伯数字表示的正整数转换成汉字大写表示

这里代码没有考虑非法输入,但如果是面试。最好跟面试官交流清楚,展现你考虑问题全面,写出的代码鲁棒性强

比如:输入的数带符号,输入的数不是整数,是小数,是负数,或者压根就不是数值,或者是空值等等

主要功能为:比如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)

把一个用阿拉伯数字表示的正整数转换成汉字大写表示相关推荐

  1. php大写数字转换,PHP将阿拉伯数字转换成汉字大写支持小数点

    PHP将带有小数点的一串阿拉伯数字转换成汉字大写形式,就像转换人民币大写类似.加入了小数点的处理,只要是一连串的数字,不管是否带有小数点,通过本函数都能完美转换. PHP将阿拉伯数字转换成汉字大写支持 ...

  2. java数字金额转换成汉字大写

    java数字转换成汉字大写.数字转发票上的人民币大写 1.调用方法 NumToCN.number2CNMontrayUnit(zjJE): 2.转换类 import java.math.BigDeci ...

  3. 人民币金额由阿拉伯数值转换成汉字大写数值的函数

    分成四个步骤: 1.数字的转化.阿拉伯数字转换为汉字大写字符 2.整数部分的转化. 分节:四位一组,从个位开始分节 每节转化为汉字大写数值:比如"1234"转化成 "壹仟 ...

  4. 10以内转大写汉字java_1.输入一个0-10之间的阿拉伯数字,将其转换成中文大写数...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ublic class demo { public static void main(String[] args) { Scanner sc=new Sc ...

  5. php将阿拉伯数字转换成中文大写,PHP将阿拉伯数字转换成汉字大写支持小数点

    第一种 /*function ch_num($num,$mode=true) { $char = array("零","壹","贰",&qu ...

  6. .net数字转换成汉字大写

    public class Num2Rmb { private String[] hanArr={"零","壹","贰","叁&qu ...

  7. 将数字日期转换成汉字大写日期

    function cnDate(enDate) { //用于将"2003-01-14"这种格式的日期更改为"二○○三年一月十四日" var OldYear,Ol ...

  8. JAVA CP936编码转utf8_对一个目录的文件从cp936转换成utf-8

    打开一个文件,确认能够无乱码打开 [xw@localhost work]$ vi NPOSP/src/sjl05.cpp 但是,这里打开的方式是以cp936的编码方式打开的. 编码的选择,记录在~/. ...

  9. 用递归算法,把任一给定的十进制正整数转换成八进制数输出。

    递归算法/函数 [递归]十进制转换成八进制  时间限制: 1000 ms  空间限制: 262144 KB 题目描述 用递归算法,把任一给定的十进制正整数转换成八进制数输出. 输入 输入一个正整数,表 ...

最新文章

  1. tensorflow tf.is_gpu_available() (判断GPU是否可用)
  2. phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
  3. Python通过amqp消息队列协议中的Qpid实现数据通信
  4. Java基础之Collection和Map
  5. LeetCode 398. 随机数索引(概率)
  6. vb 访问远程计算机,vb 连接远程服务器
  7. 下一代数据备份方式会是DNA吗?
  8. Nginx 负载均衡和缓存服务实战
  9. 【综述笔记】Graph Neural Networks in Recommender Systems
  10. linux apache配置虚拟主机,linux环境apache多端口配置虚拟主机的方法
  11. 单片机原理及应用程序c语言版题库,单片机原理及应用(C语言版)
  12. 跟着团子学SAP—SAP LTMC基础教程(物料主数据导入示例)
  13. google搜索插件
  14. c语言牛顿法求整数平方根,牛顿法求平方根-编程练习
  15. Java - Certificate has been revoked
  16. Win7蓝牙标志不见了, 如何找回?
  17. java版冒险岛_CMS072 冒险岛ONLINE 国服072版本 JAVA 服务端 - 下载 - 搜珍网
  18. 会话(gorilla/sessions)
  19. 后勤管理系统—服务台管理功能
  20. 读博期间如何发文章?

热门文章

  1. JAVA语言程序设计教程张席_Java语言程序设计教程
  2. Failed to start monitoring
  3. office卸载后无法重装终极解决办法
  4. 开源C++单元测试框架Google Test介绍
  5. 举个栗子!Tableau 技巧(116):做一个有趣的锥状柱形图
  6. iCamera App Kit 使用说明
  7. SpringBoot整合tkMapper
  8. 笔记本高分屏字体模糊_4k/1080p屏幕字体模糊怎么办?win10高分屏笔记本字体模糊太小的解决办法...
  9. 什么是Merkle Tree(默克尔树)
  10. 地图制作|AI编辑标准地图,制作符合出版需要的地图文件