人民币金额打印
来源:互联网 发布:linux编译c文件 编辑:程序博客网 时间:2024/06/05 10:21
题目描述
银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。
在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万
以下的例子示范了阿拉伯数字到人民币大写的转换规则:
1 壹圆
11 壹拾壹圆
111 壹佰壹拾壹圆
101 壹佰零壹圆
-1000 负壹仟圆
1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆
现在给你一个整数a(|a|<100000000), 请你打印出人民币大写表示.
例如:a=1
则输出:壹圆
代码
#!/usr/bin/env python#_*_coding:utf-8_*___author__ = "zaipingY"a = 1000205b = u'零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万 'def func(a): '''每4位一组进行描述,a不超过1亿,所以最多分为2组(第一组是低4位),给第二组后面加上万,其余是一样的''' s = '' sign = '' if a < 0: sign += u'负' if a == 0: sign += u'零' a = abs(a) # 组数 count_1 = 0 while a: #每一组的描述 s_1= '' i = str(a%10000) #count 用来计数, count = len(i)-2 #如果第1组前两位都是0,则要加上一个 零 if len(i)<3 and count_1 == 0: s_1 += u'零' for j in i: #如果j等于零且上一个也是零,那么不用再加零了 if int(j)==0 and s_1[-1] == u'零' : count -= 1 continue s_1 += b.split()[int(j)] #如果j等于0,后面不加‘十百千万’这些描述 if int(j) == 0: count -= 1 continue #除个位外,加‘十百千万’这些描述 if count != -1: s_1 += b.split()[count+10] count -= 1 #如果最后一位是零,去掉 if s_1[-1] == u'零': s_1 = s_1[:-1] #给第二组加 万 if count_1 != 0: s_1 += u'万' s = s_1 + s a //= 10000 count_1 += 1 return sign + s +u'圆'print(func(a))
阅读全文
1 0
- 人民币金额打印
- 人民币金额打印
- 人民币金额打印
- Python 练习 人民币金额打印
- Python入门练习0009:人民币金额打印
- 人民币金额大小写转换
- 人民币大写金额函数
- 转换人民币大小金额
- 转换人民币大小金额
- 人民币大写金额转换
- 人民币金额大写
- 转换人民币大小金额
- 转换人民币大小金额
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- 人民币大小写金额转换
- 人民币金额大写
- 《程序员面试金典》合法括号判断
- javaweb--Tomcat>>基于windows 系统源码的编译和部署
- 前端4篇
- C++类中成员变量的初始化总结
- JAVA中的反射机制
- 人民币金额打印
- JVM虚拟机个人总结(一)
- 哲学家就餐问题 Java语言实现
- PHP基本格式与PHP变量、常量
- IntelliJ IDEA 2017.2 注册方法
- 手写HashMap实现
- 编程灵异事件簿(一)
- hdu 4549 M斐波那契数列(矩阵乘法+降幂公式)
- HDU 6051 If the starlight never fade(原根+欧拉函数)