问题描述:

银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。

在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万

以下的例子示范了阿拉伯数字到人民币大写的转换规则:

1 壹圆

11 壹拾壹圆

111 壹佰壹拾壹圆

101 壹佰零壹圆

-1000 负壹仟圆

1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆

现在给你一个整数a(|a|<100000000), 请你打印出人民币大写表示.

例如:a=1

则输出:壹圆

注意:请以Unicode的形式输出答案。提示:所有的中文字符,在代码中直接使用其Unicode的形式即可满足要求,中文的Unicode编码可以通过如下方式获得:u'壹'。

这题目最头疼的地方是当一串数字中间和末尾都存在0的时候,要去掉重复出现的0和对应的单位。

例如:             6100 0310元

对应的大写为:   陆仟壹佰万零叁佰壹拾圆

这里6100后面的零转换成大写之后都去掉了,0310个位数上的0也去掉了,但是千位上的数字0保留。

 1 num_dic = {'0':u'零', '1':u'壹', '2':u'贰', '3':u'叁', '4':u'肆', '5':u'伍', '6':u'陆', '7':u'柒', '8':u'捌', '9':u'玖'}
 2 unit_dic = {0:u'仟', 1:'佰', 2:'拾', 3:'万', 4:'仟', 5:'佰', 6:'拾', 7:''}
 3 decimal_dic={0:u'角',1:u'分',2:u'厘',3:u'毫'}
 4 def convert_int(num):
 5     temp = []
 6     t = str('%8d'%abs(num))    #重点:把数字换成固定长度8位的字符串
 7     for s in range(0,4):
 8         if t[s] != ' ' and t[s] != '0':
 9             temp.append(num_dic[t[s]])
10             temp.append(unit_dic[s])
11         if t[s] == '0' and s <3 and t[s+1] != '0':
12             temp.append(num_dic[t[s]])
13     if(t[2] != ' ' and t[3] == '0'):
14         temp.append('万')
15     for s in range(4,8):
16         if t[s] != ' ' and t[s] != '0':
17             temp.append(num_dic[t[s]])
18             temp.append(unit_dic[s])
19         if t[s] == '0' and s < 7 and t[s+1] != '0':
20             temp.append(num_dic[t[s]])
21     temp = ''.join(temp)
22     if num < 0:
23         temp = '负' + temp
24     if num == 0:
25         temp = '零' + temp
26
27     return temp + u'圆'
28
29 def convert_decimal(num):
30     t = str('%4d'%num)
31     temp = []
32     for s in range(0,4):
33         if t[s] != ' ' and t[s] != '0':
34             temp.append(num_dic[t[s]])
35             temp.append(decimal_dic[s])
36         if t[s] == '0' and s < 3 and t[s + 1] != '0':
37             temp.append(num_dic[t[s]])
38     temp = ''.join(temp)
39     if len(temp) == 0:
40         return '整'
41     return temp
42
43 def convert_money(money):
44     num = round(float(money),4)
45     integer,decimal = str(num).split('.')
46     result_int = convert_int(int(integer))
47     result_decimal = convert_decimal(int(decimal))
48     return result_int+result_decimal
49
50 money = input('请输入转换的金额:')
51 print(convert_money(money))

python实现人民币大写转换

转载于:https://www.cnblogs.com/shine-rainbow/p/9767782.html

python实现人民币大写转换相关推荐

  1. java中人民币的符号怎么打_Java学习笔记---字符串操作(人民币大写转换的实现)...

    向开始学习语言的的同学们推荐下,如果你想学习语言的某个特性,比方说数据库编程,或者网络编程,最好找一个实用的例子,然后不懂的去翻书,去查资料,这样目的性就很强了,个人感觉比对着语法书敲上面的例子效率要 ...

  2. java方法转换大写日期及人民币大写转换方式 .txt

    java方法转换大写日期及人民币大写转换方式 2012-03-02 14:38:03| 分类: java |字号 订阅 /** * 阿拉伯数字与中文数字(大小写)之间的转换 * */ import j ...

  3. java将日期格式转大写_java方法转换大写日期及人民币大写转换方式 .txt

    java方法转换大写日期及人民币大写转换方式 2012-03-02 14:38:03| 分类: java |字号 订阅 /** * 阿拉伯数字与中文数字(大小写)之间的转换 * */ import j ...

  4. python 作业2:人民币大写转换问题

    题目描述: 银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序. 在中文大写方式中,0到10以及100.1000.10000被依次表示为: 零 壹 贰 ...

  5. 人民币大写转换小写数字金额 ts/es6

    /* 这里的金额 只到千万 不含亿元转换 */ /** 如果有亿元 算法和以下一样 加几步就是 */ /**想法: 把金额拆分三个数组分别计算 1. 以万结束为一个2. 以元结束为一个3. 小数 角分 ...

  6. 程序技巧:人民币大写转换,身份证识别等 ,经典收集!

    问题:    商业领域,开发票,支票等金钱相关项目通常要求转换成大写,诸如"壹拾圆陆角玖分".编程过程中,一般的钱币都是double型. 当前看到的方法:之所以写这个方法,因为看到 ...

  7. ASP.NET 实现人民币大写转换函数

    转换函数如下代码所示: public static string GetBig(string num){string result=null;string chNum = "零壹贰叁肆伍陆柒 ...

  8. FastReport人民币大写转换

    function MoneyToCharacter(Money:real):string; //数字转换为中文大写 var     temp:string;     resu:string;     ...

  9. oracle人民币大写转换

    CREATE OR REPLACE FUNCTION num2rmb(je NUMBER) RETURN VARCHAR2 IS result varchar2(100); i pls_integer ...

最新文章

  1. pythonurllib模块-Python中的urllib模块使用详解
  2. 3层b+树索引访问磁盘次数_【112期】面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解
  3. 关于 Error: No PostCSS Config found in 的错误
  4. MarkDownPad2 注册码
  5. python面向对象编程第2版_python面向对象编程(2),之,二
  6. defun 函数定义
  7. go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现
  8. Vagrant (一) - 基本知识
  9. atitit uke企业行政部 世界行政区域划分表 与邮政编码规划 v5 r88.xlsx
  10. DM适配Python
  11. adb 连接某个wifi_Android中如何使用WIFI来连接ADB
  12. 个人征信系统机构接入工作流程
  13. 2022年机器视觉综述论文
  14. Elastic Stack
  15. 帅案之上——作为开发者的远见与卓识
  16. sublime text3设置快捷键在浏览器中打开
  17. Web2 大厂「谷歌」是如何进入 Web3 的?
  18. 运动图像目标检测与跟踪简述
  19. 模块化-CMJESM
  20. 数学建模:微分方程模型—常微分方程数值解算法及 Python 实现

热门文章

  1. 计算机考证需要花钱学吗
  2. StopWatch统计耗时
  3. Linux一句话精彩问答--2008/11/02更新--20071212pdf版本下载
  4. 制衣厂普工小伙用java代码写的xml解析框架
  5. root不到怎么刷机,没有root如何刷机
  6. 苹果cmsv10新版海螺破解源码(去授权无后门版)
  7. MySQL查询时给字段赋默认值
  8. 递归—青蛙跳台阶问题
  9. “任务管理器已被管理员禁用”解决方案
  10. 不要让等待成为一种伤害