#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
人民币金额打印
最新推荐文章于 2022-09-16 18:54:39 发布