题解 | #人民币转换#
人民币转换
http://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
while True:
try:
num1,num2=input().split('.')
num1=int(num1)
out='人民币'
num11=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
num22=['角','分']
end=['亿','万','元','整']
end1000=['仟','佰','拾','']
a=num1%10000 # 低四位 加'元整角分'
b=(num1//10000)%10000 # 加'万'
c=(num1//100000000)%10000 # 加'亿'
# 读十位的函数
def change10(x):
changes2=''
if 19<x<99: # 几十几
changes2+=num11[x//10]+end1000[2] # 读到十位
if x%10 == 0:
return changes2
else:
changes2+=num11[x%10]
else: # 十几
changes2+=end1000[2]
if x%10 == 0:
return changes2
else:
changes2+=num11[x%10]
return changes2
# 读百位的函数
def change100(x):
changes1=''
changes1+=num11[x//100]+end1000[1] # 读到百位
if x%100 == 0:
return changes1
elif 9<x%100<100:
changes1+=change10(x%100)
else:
changes1+=num11[0]+num11[x%100]
return changes1
# 读千位的函数
def change1000(x):
changes=''
if x > 999:
changes+=num11[x//1000]+end1000[0]
if x%1000 == 0:
return changes
if 9 < x%1000 < 100: # 除了高位,剩下两位数
changes+=num11[0]+change10(x%1000)
elif 0 < x%1000 < 10: # 除了高位,剩下一位数
changes+=num11[0]+num11[x%1000]
else: # 除了高位,剩下三位数
changes+=change100(x%1000)
elif 99<x<1000:
changes+=change100(x) # 三位数
elif 9<x<100:
changes+=change10(x) # 两位数
else:
changes+=num11[x]
return changes
# 主程序
if num1 == 0:
for i in range(2):
if num2[i] != '0':
out+=num11[int(num2[i])]+num22[i]
else:
if c > 0: # 亿
out+=change1000(c)+end[0]
if b > 0: # 万
out+=change1000(b)+end[1]
if a > 0: # 元
out+=change1000(a)+end[2]
if num2 == '00':
out+=end[3]
else:
for i in range(2):
if num2[i] != '0':
out+=num11[int(num2[i])]+num22[i]
print(out)
except:
break

