题解 | #人民币转换#

人民币转换

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

n1 = ["零", "壹", "贰", "叁", "肆", "伍", "陆", '柒', "捌", '玖']
n2 = ['亿', '仟', '佰', '拾', '万', '仟', '佰', '拾']
n3 = ['角','分']

m, n = list(input().split("."))
a = ["人民币"]
b = len(m)
for i in range(b):
    a.append(n1[int(m[i])])
    if m[i]!="0" and (9-b+i)<=7:
        a.append(n2[9-b+i])
    if (9-b+i)<=7:
        if n2[9-b+i] =='万':
            a.append('万')
while a[-1]=="零":
    a.pop()
a.append("元")

if n == "00":
    a.append("整")
else:
    for i in range(2):
        if n[i] !="0":
            a.append(n1[int(n[i])])
            a.append(n3[i])
for i in range(len(a)):
    if a[i] == '壹' and a[i+1]=='拾':
        continue
    elif a[i] =='零' and a[i+1] =='零':
        continue
    elif a[i] =='零' and a[i+1] =='万':
        continue
    elif a[i] =='万' and a[i+1] =='万':
        continue
    elif a[i-1] =='人民币' and a[i] =='元':
        continue
    else:
        print(a[i],end="")

很笨的方法,硬解,看到下面的打印a时的continue了吗,那就是我目前已知的所有漏洞,然后一个一个用continue手动排除,机考时可以用这招,但这种方法真的蛮烂的。 12-14行是因为当万位位0时,万就没了,所以加了个万,但是这样会导致如果万位不为零就会多一个万,所以在33行给了一个判定,若是有两个万,则去除一个。

全部评论

相关推荐

09-18 12:13
已编辑
门头沟学院 产品经理
火猴大圣:不要委屈自己,进去看一看 。。。 这样你才能彻底死心
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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