人民币金额打印 分类: python 小练习 pyt...

#coding:utf-8

#数字大写对应表
bigFormat={'0':u'零','1':u"壹",'2':u"贰",'3':u'叁','4':u'肆','5':u'伍','6':u'陆','7':u'柒','8':u'捌','9':u'玖'}

unit =[u'仟',u'佰',u'拾','']

#测试数据列表
digits=[1987654321,87654321,80014321,80000000,1101234,6000,54321,4321,1021,1002,1100,1206,300,301,11,0,2,9,87654,-807654,-1,-9]

#以中文形式读取四位数据
def getFournum(n):
    if n=='0':
        return u'零'
    r=''

    for i,j in enumerate(str(n)):
        j=bigFormat[j]+unit[i-len(str(n))]
        r+=j
    r=r.replace(u'零仟',u'零')
    r=r.replace(u'零佰',u'零')
    r=r.replace(u'零拾',u'零')
    r=r.replace(u'零零',u'零')
    #r=r.replace(u'壹拾',u'拾') 如果将此句加上,则110读为:壹佰拾,建议去掉该语句
    r=r.rstrip(u'零')

    return r

def result(n,l,elem):
    if n==1:
        r=getFournum(elem)

        return r
    if n==3:
        r= getFournum(elem)+u'亿-' #在亿后面增加一个标示:"-"
        #递归调用result函数,获取 以 "万"结尾的数字
        r+=result(n-1,l,l[1])
        return r
    if n==2:
        r=getFournum(elem)+u'萬-'
        #递归调用result函数,获取末位的4个数字
        r+=result(n-1,l,l[-1])
        return r

#从左至右将数字拆分成4个元素,得到
def getdigitlist(d):
    l=[]
    for i in range(0,len(d),4):
        l.append(d[i:i+4][::-1])
    return l[::-1]

if __name__ == '__main__':

    for digit in digits:
        #flag标示是否是负数,默认0,表示不是负数;flag=-1,代表是负数
        flag = 0
        r=''
        if digit<0:
            digit=abs(digit)
            flag=-1

        elementlist=getdigitlist(str(digit)[::-1])
        print elementlist
        for item in elementlist:
            if flag==-1:
                print u'负'+result(len(elementlist),elementlist,item)+u'圆'
            else:
                print result(len(elementlist),elementlist,item)+u'圆'
            break




版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/think1988/p/4627997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值