人民币金额打印

题目链接:here。我发现我写的好复杂,但万幸编码还算符合人类,看了其他答案,感觉都是天书。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2017-06-09
# @Author : Bob Liao (codechaser1@gmail.com)
# @Link : https://github.com/coderchaser
# @Version : python3.4 #创建大小写转换字典
num_dic={
# 1 : "壹",
# 2 : "贰",
# 3 : "叁",
# 4 : "肆",
# 5 : "伍",
# 6 : "陆",
# 7 : "柒",
# 8 : "捌",
# 9 : "玖",
# 0 : "零"
u"1": u"壹",
u"2": u"贰",
u"3": u"叁",
u"4": u"肆",
u"5": u"伍",
u"6": u"陆",
u"7": u"柒",
u"8": u"捌",
u"9": u"玖",
u"0": u"零"
}
#将输入金额分组,从最低位开始四位分组,最后一组可以少于四位
def group(num_str) :
group_list=[]
i=len(num_str)
while i>=4 :
group_list.append(num_str[i-4:i])
i-=4
if i!=0 :
group_list.append(num_str[:i])
#保证顺序输出
group_list.reverse()
return group_list
#原始读函数,数字必须全部转化为字符串
def read_four(num_four) :
#读四位分组
gewei=""
shiwei=""
baiwei=""
qianwei=""
num_len=len(num_four)
#当传入的数字为0000时num_len会变成1,会发生list越界
if num_four[-1]!=u'0' :
if num_four[-2]!=u'0' :
gewei=num_dic[num_four[-1]]
else :
gewei=u"零"+num_dic[num_four[-1]]
if num_four[-2]!=u'0' :
if num_four[-3]!=u'0' :
shiwei=num_dic[num_four[-2]]+u"拾"
else :
shiwei=u"零"+num_dic[num_four[-2]]+u"拾"
if num_four[-3]!=u'0' :
if num_four[-4]!=u'0' :
baiwei=num_dic[num_four[-3]]+u"佰"
else :
baiwei=u"零"+num_dic[num_four[-3]]+u"佰"
if num_four[-4]!=u'0' :
qianwei=num_dic[num_four[-4]]+u"仟"
return qianwei+baiwei+shiwei+gewei
def read_three(num_three) :
#读三位分组
gewei=""
shiwei=""
baiwei=""
if num_three[-1]!=u'0' :
if num_three[-2]!=u'0' :
gewei=num_dic[num_three[-1]]
else :
gewei=u"零"+num_dic[num_three[-1]]
if num_three[-2]!=u'0' :
if num_three[-3]!=u'0' :
shiwei=num_dic[num_three[-2]]+u"拾"
else :
shiwei=u"零"+num_dic[num_three[-2]]+u"拾"
if num_three[-3]!=u'0' :
baiwei=num_dic[num_three[-3]]+u"佰"
return baiwei+shiwei+gewei
def read_two(num_two) :
#读二位分组
gewei=""
shiwei=""
if num_two[-1]!=u'0' :
if num_two[-2]!=u'0' :
gewei=num_dic[num_two[-1]]
else :
gewei=u"零"+num_dic[num_two[-1]]
if num_two[-2]!=u'0' :
if num_two[-2] ==u'1' :
shiwei=u"拾"
else :
shiwei=num_dic[num_two[-2]]+u"拾"
return shiwei+gewei
def read_one(num_one) :
#读一位分组
if num_one!=u'0' :
return num_dic[num_one]
else :
return ""
#建立调用字典关系
call_read={
1 : read_one,
2 : read_two,
3 : read_three,
4 : read_four
}
def read(num) :
#将数字int转化为字符串
#金额不可以像如下形式:
# 0100
#Python3会将0开头的数字
#识别为8进制,一般人不会
#这样写金额,不予考虑
if num == 0:
print("零圆")
return
num_str=str(abs(num))
#分组
group_list=group(num_str)
read_part=[]
if num<0 :
read_part.append(u'负')
for i in group_list :
len_part=len(i)
read_part.append(call_read[len_part](i))
if group_list.index(i)== 0 and len(group_list)>1 :
read_part.append(u'万')
read_part.append(u'圆')
print("".join(read_part)) # num=int(input('Your Number: '))
# print(num)
read(90901001)

Python TIPS上一道关于人民币金额小写转大写的题的更多相关文章

  1. js转换人民币金额 小写到大写

    u.bigNum=function(n) { var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒 ...

  2. 【转载】C#工具类:人民币金额转换为中文大写

    在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...

  3. js helper(hsv/hsb转rgb颜色,uuid,金额小写转大写)

    hsv/hsb转rgb颜色 //h:[0,360],s:[0,100],v:[0,100] //return r:[0,256], g:[0,256],b:[0,256] function hsvto ...

  4. 用python实现把数字人民币金额转换成大写的脚本程序

    # -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...

  5. JS函数实现金额小写转大写

    ///<summery>小写金额转化大写金额</summery> function AmountLtoU(amount) { if (isNaN(amount) || amou ...

  6. js 金额小写转换为大写

    <script> jQuery(document).ready(function () { //当金额文本框失去焦点时,自动将数字转化为大写填充到 大写的文本框中 $("#Amo ...

  7. js实现金额小写转大写

    function convertCurrency(currencyDigits) { var MAXIMUM_NUMBER = 1000000000000.00; var CN_ZERO = &quo ...

  8. orcl数据库自定义函数--金额小写转大写

    很多时候在打印票据的时候需要用到大写,ireport无法转换,只能先在查询语句里面进行转换,首先定义好函数,之后再调用函数 CREATE OR REPLACE Function MoneyToChin ...

  9. ABAP-金额小写转大写

    FUNCTION ZSDI0007_CH_LOWERTOUPPER. *"---------------------------------------------------------- ...

随机推荐

  1. 浅谈有趣的 //go: 指令

    前言 如果你平时有翻看源码的习惯,你肯定会发现.咦,怎么有的方法上面总是写着 //go: 这类指令呢.他们到底是干嘛用的? 今天我们一同揭开他们的面纱,我将简单给你介绍一下,它们都负责些什么 go:l ...

  2. win10 bcdedit testsigning

    win10 bcdedit testsigning # 禁用系统完整性检查和禁用驱动签名以及进入测试签名驱动模式> bcdedit.exe /set nointegritychecks on & ...

  3. rabbitmq监控之消息确认ack

    rabbitmq springboot ack 监控 一.测试环境 二.启动测试 一直以来,学习rabbitmq都是跟着各种各样的教程.博客.视频和文档,撸起袖子就是干!!!最后,也成功了. 当然,成 ...

  4. 《区块链DAPP开发入门、代码实现、场景应用》笔记4——Ethereum Wallet中部署合约

    账号创建完成之后,账号余额是0,但是部署合约是需要消耗GAS的,因此需要获取一定的以太币才能够继续本次实现.在测试网中获取以太币可以通过挖矿的方式,在开发菜单中可以选择打开挖矿模式,但是这需要将Syn ...

  5. leetcode 学习心得 (2) (301~516)

    源代码地址:https://github.com/hopebo/hopelee 语言:C++ 301. Remove Invalid Parentheses Remove the minimum nu ...

  6. IDEA修改选取单词颜色和搜索结果的颜色

    一.修改选取单词颜色 下图所示,选取Father后背景为淡蓝色,其它相同单词背景为灰色,根本看不清楚 修改配置 1.修改选取文本背景色为78C9FF 2.修改相同文本背景色为78C9FF,包括iden ...

  7. linux文件常用操作

    建立目录:mkdir mkdir -p [目录名] -p 递归创建 命令英文原意: make directories 切换所在目录:cd cd [目录] cd ~    进入当前用户的家目录 cd c ...

  8. 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图

    WTF表单  wtf.py pip install flask-wtf  # 安装 from flask_wtf import FlaskForm from wtform import StringF ...

  9. 攻防世界WEB高手进阶之Zhuanxv

    1.一开始就是一个时钟界面 2.扫描目录发现/list 目录 打开是后台登陆,看了一下源码,也没发现什么,焦灼... 3.百度上搜了一波wp,发现原来在css里面藏了东西 后台的背景图片居然是这样读取 ...

  10. Python开发笔记之-浮点数传输

    操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 Python 版本 : 2.7.5 思路如下 : 1.将浮点数a通过内存拷贝,赋值给相同字节的整型数据b: 2.将b转换为 ...