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

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

1	壹圆
11	壹拾壹圆
111	壹佰壹拾壹圆
101	壹佰零壹圆
-1000	负壹仟圆
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')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值