Python小程序 -- 人民币小写转大写辅助工具
来源:互联网 发布:08最新电影源码 编辑:程序博客网 时间:2024/06/09 21:15
大家应该都知道,银行打印账单有时候会跟上人民币的阿拉伯数字以及人民币汉字大写写法,转换的过程中有一定的逻辑难度,较为麻烦,所以笔者心血来潮,花了点时间简单实现了一下这一转换过程,以供初学者参考。
输入样例:
123.22
输出样例:
壹佰贰拾叁圆贰角贰分
参考代码:
#!/usr/bin/env python# encoding: utf-8from __future__ import print_functionimport sysimport reimport base64import timeimport osimport getpassreload(sys)sys.setdefaultencoding("utf-8")char_arr_01 = [u"零".decode("utf8"), u"壹".decode("utf8"), u"贰".decode("utf8"), u"叁".decode("utf8"), u"肆".decode( "utf8"), u"伍".decode("utf8"), u"陆".decode("utf8"), u"柒".decode("utf8"), u"捌".decode("utf8"), u"玖".decode("utf8")];char_arr_02 = [u"圆".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8"), u"仟".decode("utf8"), u"万".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8"), u"仟".decode( "utf8"), u"亿".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8"), u"仟".decode("utf8"), u"万".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8")]char_arr_03 = [u"分".decode("utf8"), u"角".decode("utf8")]def calcRMB():sum_arr = []in_str_dot = ""in_str_Big = ""flag = 0dot_count = 0in_str = raw_input("Please input number : ")for i in in_str:if i == '.':dot_count += 1elif ord(i) <= ord('z') and ord(i) >= ord('A'):print("Error")returnif len(in_str) > 12 or dot_count > 1:print("Error")returnin_str = unicode(in_str).decode("utf8")out_str = ""if in_str.find('.') != -1:flag = 1sum_arr = in_str.split('.')in_str_Big = sum_arr[0]if flag==1:in_str_dot = sum_arr[1]for i in range(len(in_str_Big)):if cmp(in_str_Big[i],'0') == 0 and (len(in_str_Big)-1-i)%4 != 0:out_str = out_str + char_arr_01[ord(in_str_Big[i])-ord('0')]else:out_str = out_str + char_arr_01[ord(in_str_Big[i])-ord('0')]out_str = out_str + char_arr_02[len(in_str_Big)-1-i]while out_str.find(u"零零".decode("utf8")) != -1:out_str = out_str.replace(u"零零".decode("utf8"), u"零".decode("utf8"))out_str = out_str.replace(u"零亿".decode("utf8"),u"亿".decode("utf8"))out_str = out_str.replace(u"零万".decode("utf8"),u"万".decode("utf8"))if out_str != u"零元".decode("utf8"):out_str = out_str.replace(u"零圆".decode("utf8"),u"圆".decode("utf8"))if len(in_str_dot) > 2 and flag == 1:print("False !!")returnif flag == 1:for i in range(len(in_str_dot)):out_str = out_str + char_arr_01[ord(in_str_dot[i])-ord('0')]out_str = out_str + char_arr_03[len(in_str_dot)-1-i]print(out_str)def main():while 1:os.system("cls")calcRMB()print()end_flag = raw_input("Try Again ? (y/n)")if end_flag == 'y' or end_flag == 'Y':continueelif end_flag == 'n' or end_flag == 'N':breakelse:print("\nError!!")breakif __name__ == '__main__':main()
阅读全文
0 0
- Python小程序 -- 人民币小写转大写辅助工具
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写转大写代码
- 人民币小写转大写(java)
- Java人民币小写转大写
- 人民币小写转大写 java
- 求二叉树两节点的最低公共节点
- OpenCV学习之六: 使用方向梯度直方图估计图像旋转角度
- poj 2449 Remmarguts' Date (A*,k短路)
- 软件需求工程 课堂笔记5
- C++11多线程原子类型
- Python小程序 -- 人民币小写转大写辅助工具
- HDU4596Yet another end of the world(扩展欧几里得)
- 1030. 完美数列(25)--PAT乙级
- 在windows10上安装tensorflow(GPU)
- java 实现排列组合Permutation and Combination和链式不相邻排列组合和环形不相邻排列
- HDU
- java连接oracle数据库代码
- 基于CentOS的MYSQL基础介绍
- CentOS7设置定时任务 每隔30分钟执行一次命令