对中间有多个0的处理方式,对末尾有0的处理方式的一些思考。
以上,供参考
def func(x)->str:
res = []
zero_pre = False # 确保在连续‘0’的情况下,只有一个'零'
for i, xi in enumerate(x[::-1]): # 倒着转化
if xi=='0':
if not zero_pre:
res.append(num[int(xi)])
zero_pre = True
else:
zero_pre = False
res.extend([pro[i], num[int(xi)]])
res = res[::-1]
# print(res)
while res[-1]=='零':# 去掉后面所有的 ”零“
res.pop()
return ''.join(res).replace('壹拾', '拾')
num = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
pro = ['', '拾','佰','仟','万','亿','元','角','分','整']
while True:
try:
n, m = input().strip().split('.')
res = ['人民币']
if len(n)>8:
res.append(func(n[:-8])+'亿')
if len(n)>4:
res.append(func(n[-8:-4])+'万')
if n!='0':
res.append(func(n[-4:])+'元')
if m=='00':
res.append('整')
else:
if m[0]>'0':
res.append(num[int(m[0])]+'角')
if m[1]>'0':
res.append(num[int(m[1])]+'分')
print(''.join(res))
except:
break
"""
0.85
0.25
人民币捌角伍分
人民币贰角伍分
1024.56
10012.02
100110.00
30105000.00
人民币壹仟零贰拾肆元伍角陆分
人民币壹万零拾贰元贰分
人民币拾万零壹佰拾元整
人民币叁仟零拾万伍仟元整
"""

京公网安备 11010502036488号