题解 | #人民币转换#

人民币转换

http://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b

测试例太少了,也不知道情况覆盖全面不全面

gewei = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
shiwei = ["", "拾","佰","仟"]
wanwei = ["", "万", "亿"]

def run(seq):
    p0, p1 = seq.split(".")
    s1, s2 ='', ''
    if p1 == '00':
        s2 += "整"
    else:
        if p1[0] != "0":
            s2+=f"{gewei[int(p1[0])]}角"
        if p1[1] != "0":
            s2+=f"{gewei[int(p1[1])]}分"
    s1list = []
    if p0 != "0":
        ps = p0[::-1]
        for j in range(0, len(ps), 4):
            tmp = []
            tmp.append(('',wanwei[j//4], 0))
            for i,p in enumerate(ps[j:j+4]):
                if int(p) > 0:
                    tmp.append((gewei[int(p)], shiwei[i], i))
            s1list.append(tmp)
        s1 = ""
        for j,s in enumerate(s1list[::-1]):
            st = ''
            s = s[::-1]
            for i in range(len(s)-1):
                st += s[i][0]+s[i][1]
                if s[i][2]-s[i+1][2] > 1 and st[-1] != "零":
                    st+="零"
            if len(st) >0:
                if st[-1]=='零':
                    st = st[:-1]
            else:
                st = "零"
            l = ''
            if s[0][2] < 3 and st[-2:] != "拾万" and len(s1list)-1 > 0:
                l = '零'
            s1 = s1+l+st+s[-1][1]
        res=f"{s1}元{s2}"
        if res[:2] == "壹拾":
            res = "拾"+res[2:]
        res = res.replace("零元", "元")
    else:
        res=f"{s2}"

    print("人民币"+res)

seq = input().strip()
run(seq)
全部评论

相关推荐

2025-12-29 20:37
已编辑
清华大学附属小学 Java
开始打牌offer啦:1.为什么要写这么多内容呀 2.什么叫做简历 3.什么样的内容可以写到简历上 4.项目可以包装,但是要有理有据呀,不能乱包装呀,比如 跨境能达到日均120万订单的在国内都是能叫的上名字的,而且这些工作也基本上不太会交给一个实习生去做 建议友友可以去网上或者找同学的简历看看,他们的简历是怎么写的,去找找上面的那四个问题的答案吧,然后要记住的是Java是服务于业务的,而不是服务于微服务或者技术的
最后再改一次简历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务