题解 | #人民币转换#
人民币转换
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行给了一个判定,若是有两个万,则去除一个。