大家好,我是吒吒。

我们的工作中遇到一些问题,不依靠工具的话,改起来真的超级麻烦,还会遗漏。有个小伙伴提出怎么把数字转成人民币(大写汉字),Python还真的可以做到,并且挺简单的,新手都可以操作。下面附上源代码,可以拿去练手。

估计工作上要修改Python实现数字转人民币(大写汉字)源代码,运行截图:

完整程序代码:

import warningsfrom decimal import Decimaldef cncurrency(value, capital=True, prefix=False, classical=None):    '''    人民币数字转大写汉字,参数:    capital:    True   大写汉字金额                False  一般汉字金额    classical:  True   元                False  圆    prefix:     True   以'人民币'开头                False, 无开头    '''    if not isinstance(value, (Decimal, str, int)):        msg = '''        由于浮点数精度问题,请考虑使用字符串,或者 decimal.Decimal 类。        '''        warnings.warn(msg, UserWarning)    # 默认大写金额用圆,一般汉字金额用元    if classical is None:        classical = True if capital else False
    # 汉字金额前缀    if prefix is True:        prefix = '人民币'    else:        prefix = ''
    # 汉字金额字符定义    dunit = ('角', '分')    if capital:        num = ('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖')        iunit = [None, '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万', '拾', '佰', '仟']    else:        num = ('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九')        iunit = [None, '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千']    if classical:        iunit[0] = '元' if classical else '圆'    # 转换为Decimal,并截断多余小数
    if not isinstance(value, Decimal):        value = Decimal(value).quantize(Decimal('0.01'))
    # 处理负数    if value < 0:        prefix += '负'  # 输出前缀,加负        value = - value  # 取正数部分,无须过多考虑正负数舍入        # assert - value + value == 0    # 转化为字符串    s = str(value)    if len(s) > 19:        raise ValueError('金额太大了,不知道该怎么表达。')    istr, dstr = s.split('.')  # 小数部分和整数部分分别处理    istr = istr[::-1]  # 翻转数部分字符串    so = []  # 用于记录转换结果
    # 零    if value == 0:        return prefix + num[0] + iunit[0]    haszero = False  # 用于标记零的使用    if dstr == '00':        haszero = True  # 如果无小数部分,则标记加过零,避免出现“圆零整”
    # 处理小数部分    # 分    if dstr[1] != '0':        so.append(dunit[1])        so.append(num[int(dstr[1])])    else:        so.append('整')  # 无分,则加“整”    # 角    if dstr[0] != '0':        so.append(dunit[0])        so.append(num[int(dstr[0])])    elif dstr[1] != '0':        so.append(num[0])  # 无角有分,添加“零”        haszero = True  # 标记加过零了
    # 无整数部分    if istr == '0':        if haszero:  # 既然无整数部分,那么去掉角位置上的零            so.pop()        so.append(prefix)  # 加前缀        so.reverse()  # 翻转        return ''.join(so)
    # 处理整数部分    for i, n in enumerate(istr):        n = int(n)        if i % 4 == 0:  # 在圆、万、亿等位上,即使是零,也必须有单位            if i == 8 and so[-1] == iunit[4]:  # 亿和万之间全部为零的情况                so.pop()  # 去掉万            so.append(iunit[i])            if n == 0:  # 处理这些位上为零的情况                if not haszero:  # 如果以前没有加过零                    so.insert(-1, num[0])  # 则在单位后面加零                    haszero = True  # 标记加过零了            else:  # 处理不为零的情况                so.append(num[n])                haszero = False  # 重新开始标记加零的情况        else:  # 在其他位置上            if n != 0:  # 不为零的情况                so.append(iunit[i])                so.append(num[n])                haszero = False  # 重新开始标记加零的情况            else:  # 处理为零的情况                if not haszero:  # 如果以前没有加过零                    so.append(num[0])                    haszero = True
    # 最终结果    so.append(prefix)    so.reverse()    return ''.join(so)i = input('请输入金额:')print("转换成人民币读法是:", cncurrency(i))

怎么样看完学废了吗?最后,如果你也有Python爱好者,我这里也整理了一套完整的新手学习路线跟资料,戳下面名片找小助理领取

零基础实操 | Python实现数字转人民币(大写汉字)源代码相关推荐

  1. TheBrain零基础实操教程——如何定制TheBrain界面使用环境?

    TheBrain(点击下载),您的终极数字记忆和无限思维导图软件.我们从一个想法跳到另一个想法,构建越来越复杂的网络,直到新想法形成.TheBrain允许你以同样的方式组织你的信息,而不限制你预先确定 ...

  2. 零基础学python pdf-笔记《零基础入门学习Python(第2版)》PDF+课件+代码分析

    通过自学编程,感觉到基础知识很重要,越到后面越能发现这一点,光记住是不行的,还要灵活运用,要多调试代码,计算机就是一个不断练习,不断遇到问题,解决问题的工种,要根据实际的业务能想到对应的语法,实际项目 ...

  3. python爬虫ppt_完全零基础 轻松学Python:数据类型:数字类型、空类型、布尔类型...

    Tip:点击上方或此处 "#完全零基础 轻松学Python" 话题,查看更多内容,欢迎点赞.分享.收藏,谢谢支持! 内 容 概 要 1. 数据类型概述 数据类型的概念.常见的八种数 ...

  4. 【GIS人必学】零基础学习ArcGIS Python脚本开发训练营来了

    Python作为一种高级程序设计语言,凭借其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言.ArcGIS软件由于其面向地理问题的科学理念,不断创新的技术方法,已在国内外市场占据了主导地位.Py ...

  5. 零基础如何学习Python?

    今天小编要跟大家分享的文章是关于零基础如何学习Python?很多想要学习Python技术的零基础学员都想知道如何才能快速入门Python.想要学习Python的小伙伴们快来和小编一起看一看吧! 一.P ...

  6. 零基础入门学习Python,我与python的第一次亲密接触后的感受!

    前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...

  7. python编程零基础免费网课-Python网课推荐——免费学习Python编程

    对于想要学习python的初学者,面对网上大量的学习素材无从下手.今天小编就整理了一份详细的python教学视频合集,希望能为初学者提供一些学习的方向. 1.python入门 课程推荐:零基础入门学习 ...

  8. 零基础可以学python吗-零基础适合学Python吗?小白能否学会Python?

    原标题:零基础适合学Python吗?小白能否学会Python? 我没学过编程,能否学会Python? 肯定的回答您:完全能学会 其实,很多个程序员都是从不会到会,每种知识也是从基础到复杂,大家都是从零 ...

  9. 零基础入门学习Python,我与python的第一次亲密接触后的感受

    前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...

最新文章

  1. R语言如何将字符串转变为命令执行
  2. Java提升篇:理解String 及 String.intern() 在实际中的应用
  3. SAP 主生产计划(MPS)
  4. 回顾一下Unix哲学
  5. 快速开平方取倒数的算法
  6. Python----常用模块1
  7. c语言程序设计多个文件,c语言如何单文件变多文件(2个文件),求大神帮忙!!...
  8. 数据类型的内置方法:元组
  9. HTML(Hepertext Markup Language 超文本标记语言)
  10. 天线工程手册_胆大心细 专业敬业——记FPSO改装MV30项目球形天线组装工程
  11. OEL修改字符集失败 -bash: /root: is a directory
  12. wxpython安装不上怎么回事_安装Python - wxPython失败的解决方法
  13. 文本分割器TXTSpliter
  14. 马原复习思维导图-前三章
  15. WIN10设置护眼 豆沙绿
  16. 计算机的硬盘u盘属于什么,移动硬盘和机械硬盘有什么区别?
  17. http://www.cnblogs.com/dolphin0520/p/3923167.html
  18. 基于多线程的随机数生成算法
  19. SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理
  20. 如何将零碎信息结构化并做到有序安放,以实现知识积累?

热门文章

  1. 盘古开源:推动大数据产业发展,运营商如何创造数字经济新价值?
  2. Element 表头排序强制不换行
  3. 长期熬夜——真的不好
  4. Ubuntu调节分辨率
  5. JavaScript期末复习
  6. shell判定文件夹下存在某种类型的文件
  7. abb工业机器人教程 zxw_自学网ABB工业机器人教程 - 轻松自学网
  8. 大数据学习02:大数据课程概述与大数据背景知识
  9. 18万人在线等的SLG《大周列国志》来了!硬核历史、高分清流 | Created with Cocos...
  10. Exchange 备份问题汇总