关闭

人民币金额打印

811人阅读 评论(0) 收藏 举报
分类:
#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




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:988171次
    • 积分:8955
    • 等级:
    • 排名:第2099名
    • 原创:189篇
    • 转载:202篇
    • 译文:1篇
    • 评论:46条
    文章分类
    最新评论