md我傻了,真的傻了,py上了这么多周没上过机,试着写一下感觉被我写成了c
题不难但是我写的好复杂好丑,天哪,感觉python的各种操作都被我吃了
描述
银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。
在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万
以下的例子示范了阿拉伯数字到人民币大写的转换规则:
1 壹圆
11 壹拾壹圆
111 壹佰壹拾壹圆
101 壹佰零壹圆
-1000 负壹仟圆
1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆
现在给你一个整数a,请你打印出人民币大写表示.
例如:a=1
则输出:壹圆
注意:请以Unicode的形式输出答案。提示:所有的中文字符,在代码中直接使用其Unicode的形式即可满足要求,中文的Unicode编码可以通过如下方式获得:u'壹'。
flag2 = False
l = [u'零', u'壹', u'贰', u'叁', u'肆', u'伍', u'陆', u'柒', u'捌', u'玖']
l2 = [u'', u'', u'拾', u'佰', u'仟', u'万']
ans = ''
if a < 0:
ans += u'负'
a = -a
flag2 = True
def Get(s):
t = ''
k = len(s)
flag = False
if k == 1 and s[0] == '0':
return ''
if ord(s[0])>48:
t += l[ord(s[0])-48]
t += l2[k]
pos = 0
if k == 1:
return l[ord(s[0])-48]
else:
if k == 2:
jb = l[ord(s[0])-48] + l2[k]
if s[1] != '0':
jb += l[ord(s[1])-48]
return jb
else:
for i in range(1, k):
pos = i
if s[i] != '0':
if s[i - 1] == '0':
flag = True
break
if flag:
t += l[0]
t += Get(s[pos:])
return t
temp2 = ''
temp1 = str(a % 10000)
#----------------
if (len(str(a)) > 4):
temp2 = str(int(a / 10000))
ans += Get(temp2)
ans += l2[5]
if len(str(a)) > 4 and len(temp1) < 4 and temp1[0] != '0':
ans+=l[0]
ans += Get(temp1)
#----------------
ans += u'圆'
if (a == 10):
if flag2:
ans = u'负'
ans += "拾圆"
if (a == 0):
ans = "零圆"
print(ans)