萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创。
IDE:pycharm
python版本:python3.7

'''
实验目的:在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的功能。在这次实验,你将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字。
程序运行过程:
1.  提示用户输入金额的范围并接收用户输入的金额
2.  将用户输入的金额转换为中文大写并输出
3.  询问用户是否退出程序
实验思路:
1.  通过定义一个字典进行阿拉伯数字与大写中文的对比储存
2.  将用户的输入首先分割为整数与小数部分分别进行处理
3.  整数部分可以分割为以 4 位数字为一组的列表来进行转换处理,这样便于进行
(兆,亿,万,圆)。的单位处理
'''
dic_num=[{'1':'壹','2':'贰','3':'叁','4':'肆','5':'伍','6':'陆','7':'柒','8':'捌','9':'玖','0':'零'},'拾', '佰', '仟', '万']
figure=['圆','万','亿','兆']#小数部分字符串
def data_num_split(input_num):'''整个金额分割函数:return: 小数部分和整数部分'''j=0if '.'not in input_num:integer=input_numdecimals=''else:for i in input_num.split("."):if j==0:# print(i)integer=ij+=1else:# print(i)decimals=ireturn integer[::-1],decimalsdef groupful_num():num_group1 = []num_group2 = []count = 0while True:for i in integer:count += 1num_group1.append(i)if count % 4 == 0:# print(num_group1)num_group2.append(num_group1)# money_cn = func(num_group2) + '圆' + money_cnnum_group1 = []else:if num_group1 not in num_group2 and len(num_group1)!=0:num_group2.append(num_group1)# money_cn = func(num_group2) + '圆' + money_cnbreakelse:breakreturn num_group2def integer_part(integer):'''整数部分:return:'''# integer=integer[::-1]if integer == '0':return '零圆'answer=''count=0for num_group in groupful_num():answer=read_num(num_group)+figure[count]+answercount+=1# print(answer)return answerdef read_num(b):ns = ''for x in range(1, len(b)):num = dic_num[0][b[x]]  # 转换大小写word = num + (dic_num[x] if b[x] != '0' else '') # 如果字符是0,添加一个''ns = word + ns  # 叠加return ns + (dic_num[0][b[0]] if b[0] != '0' else '')def decimals_part(decimals):'''小数部分:return:'''new_deciamls = ''for i in range(len(decimals)):if i == 0:new_deciamls += dic_num[0][decimals[i]]new_deciamls += '角'else:new_deciamls += dic_num[0][decimals[i]]new_deciamls += '分'else:new_deciamls += '整'return new_deciamls
#主函数
i =1
while i==1:input_num=input("请输入不超过一万兆的金额,小数部分不超过两位:")integer = data_num_split(input_num)[0] # 整数部分字符串分割decimals = data_num_split(input_num)[1]while len (decimals)>=3:breakelse:print(integer_part(integer), decimals_part(decimals))if input("是否继续转换?")=='否':i=0print("谢谢使用!")break
  • 首先分割字符串,分为整数部分和小数部分
  • 整数部分,最后出一个bug,整数部分如果整四位的话,四位一组函数会在最后添加一个空集(因为空集不存在于group_2中)所以判断条件添加了一个判断group_1是否为空
  • 以小数点”.”为标志用split函数分割字符串为两部分,分别保存
  • 小数部分判断位数不超过2位,可为空
  • N个小组—:num_group1,存储四位数字(字符串格式),最后一组数字可能不够四位,也可能为空,空的数组不能存,不然会数据越界,因为空没有对应的字典
  • 一个大组:num_group2,元素为四位数字的小组
  • append函数在数组最后添加元素,
  • 数组内容可更改,字符串内容不可更改,每次更改字符穿都是新建一个新的字符串,然后用字符串名字的指针指向新的字符串
  • 整数部分调用grouoful_num和read_num
  • 因为是从头向后读取,根据正常读数字习惯,将整数部分前后颠倒
  • 然后以小组形式转换大小写,在字符串头部添加新的字符
  • 直接在answer=new+answer就在头部添加了
  • continue函数跳出当前循环,然后进入当前循环的下一次循环
  • break函数跳出当前循环,进入当前循环语句后一句语句

Python:阿拉伯数字转换为中文大写数字(金额的读数规则)相关推荐

  1. Python 阿拉伯数字转换为中文大写数字

    题目 python练习的一个小实验,  题目如下图: 附阿拉伯数字对应的中文大写: 思路 1. 通过定义一个字典进行阿拉伯数字与大写中文的对比储存 2. 将用户的输入首先分割为整数与小数部分分别进行处 ...

  2. 将阿拉伯数字转换为中文大写数字 —— pyhton实现

    将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...

  3. C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码

    C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码 数据结构:用一个整型变量储存输入数字   大家可能会感觉用字符串取位更方便一些·· 但是相应的,字符串失去了数字原有的意思 00100和100对 ...

  4. 阿拉伯数字转换为中文大写数字

    这个功能使用场景不多,百度也能找到很多相关代码,只不过我找了几个看的不是很明白,为了锻炼自己的思维能力,所以就干脆自己写了一个,不仅分享代码,同时也分享一下我的思路 JS代码 let moneyCas ...

  5. 正则也很牛,把阿拉伯数字的金额转换为中文大写数字

    using System; using System.Text.RegularExpressions; class Program {   // 把阿拉伯数字的金额转换为中文大写数字   static ...

  6. 金额阿拉伯数字转换为中文大写

    最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...

  7. VB 阿拉伯数字转换为中文大写数值函数

    Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...

  8. 阿拉伯数字转换为汉字大写数字

    阿拉伯数字转换为汉字大写数字: 首先需要建立两个视图: create view V_HZNumber as     SELECT 0 F1,'零' F2,'个' F3 UNION     SELECT ...

  9. Lua阿拉伯数字转中文大写数字

    function numberToString(szNum)---阿拉伯数字转中文大写local szChMoney = ""local iLen = 0local iNum = ...

最新文章

  1. Linux的主要特性
  2. oracle常用函数归纳
  3. python的none是什么-Python中的None与Null(空字符)的区别
  4. 没错,接单就是特简单!
  5. 成功解决pywintypes.error: (2, 'LoadLibraryEx', '系统找不到指定的文件。')
  6. 条件 CHAIN 语句
  7. 用Python学分析 - 单因素方差分析
  8. php 定时脚本执行wget无效_写了个Bug,误执行rm fr /*,瞬间背后一凉!
  9. jinfo:JVM运行时配置的命令行浏览
  10. 信息学奥赛C++语言:时间转换
  11. jsp和mysql乱码
  12. 视觉SLAM笔记(27) 非线性最小二乘
  13. P3667 [USACO17OPEN]Bovine Genomics
  14. [渝粤教育] 中国地质大学 大学英语(4) 复习题
  15. c make干什么用得_CMake简单使用
  16. UOS U盘已经复制成功,有时卡死
  17. 总结常见的10种破解密码方法
  18. ISA服务器安装设置全集
  19. 应届毕业生外包公司体验
  20. batchnorm原理及代码详解

热门文章

  1. 河北相关部门指北京公交进廊坊涉嫌非法运营
  2. 【SWT组件】内容滚动组件 ScrolledComposite
  3. 磁盘管理高级进阶-磁盘配额(CenOS7.X)
  4. 流氓软件的对抗之路续集,如何定位删除流氓软件
  5. 我最喜欢的油猴脚本——可以追跑某盘SVIP
  6. 职场人生(九):2012 回想这半年走过来的路
  7. 控制JSP页面上的文本框只能输入数字
  8. Java Web假登录
  9. 快鲸智慧社区系统的应用场景有哪些
  10. Java代码读取图片的两种方式