python 人民币金额打印(我好five)

70 篇文章 0 订阅

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值