您的位置:首页 > 编程语言 > Python开发

Python入门练习0009:人民币金额打印

2017-04-08 10:39 567 查看
题目:人民币金额打印
银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。
在中文大写方式中,0到10以及100、1000、10000被依次表示为:
零壹贰叁肆伍陆柒捌玖拾佰仟万
以下的例子示范了阿拉伯数字到人民币大写的转换规则:

1	壹圆
11	壹拾壹圆
111	壹佰壹拾壹圆
101	壹佰零壹圆
-1000	负壹
9ff4
仟圆
1234567	壹佰贰拾叁万肆仟伍佰陆拾柒圆

现在给你一个整数a(|a|<100000000), 打印出人民币大写表示.
注意:请以Unicode的形式输出答案。你可以通过decode("utf8")来将utf8格式的字符串解码为Unicode,例如你要输出ans = "零圆", print ans.decode("utf8").
Note:数据已于2013-11-19日加强,原来通过的代码可能不能再次通过。
答案:一个好的约定可以少些很多代码

#-*- coding:utf-8 -*-
N = {0:'零',1:'壹',2:'贰',3:'叁',4:'肆',5:'伍',6:'陆',7:'柒',8:'捌',9:'玖'}
M = ['亿','仟','佰','拾','萬','仟','佰','拾','圆']
while True:
    a = int(raw_input('please enter a number:'))
    if len(str(a))>9:
        print 'the number is to long'
        break
    b = abs(a)
    New =[]
    for st in str(b):
        if int(st) in  N.keys():
           New.append(N[int(st)])
    L=M[-len(New):]
    S =''
    for (x,y) in zip(New,L):
        S+=x+y
    if a<0:    
        print u'负'+S.decode('utf8')
    else:
        print S.decode('utf8')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: