13651.Python数字は中国語の大文字と読む
単位は億しかできないので、1億以内の数字しか処理できません.必要に応じて、さらに拡張できます.小数部の考え方は簡単で、対照的に中国語に変えればいいです.整数部1は、まずソートアルゴリズムにおける分割の考え方を参照して、億、万を分割点として文字列を分割し、それから1万以内の読み方を処理し、さらに億、万などの分割点2を加えて右から左に「零」+「単位」を処理する場合(ゼロを含む)3処理「一十」の先頭を「十」処理の末尾とする「零」を処理する
import sys
a = " "
zero = " "
def num2chinese(num):
#
dian=num.find('.')
#
Index=0
if num[Index]=='-':
print(" ",end='')
Index=1
#
ZhengShu=num[Index:]
XiaoShu=''
if dian>-1:
XiaoShu=num[dian:]
ZhengShu=num[Index:dian]
return Qulin(Zhengshu(ZhengShu))+Xiaoshu(XiaoShu)
def Qulin(temp):#
if len(temp)<2:return temp
for i in range(len(temp)-1,1,-1):
if temp[i] in zero and temp[i-1]==' ':
temp=temp[0:i-1]+temp[i:len(temp)]
for i in range(len(temp)-1,1,-1):
if temp[i]==' ' and temp[i-1]==' ':
temp=temp[0:i]+ temp[i+1:]
if temp[-1]==' ':#
temp=temp[:-1]
if temp[0]==' ' and temp[1]==' ' :#
temp=temp[1:]
return temp
def Zhengshu(num):
temp=""
if len(num)>8:# ,
temp+=Zhengshu(num[0:len(num)-8])+' '
num=num[len(num)-8:]
if len(num)>4:# ,
temp+=Zhengshu(num[0:len(num)-4])
temp+=' '
num=num[len(num)-4:]
if len(num)>3:#
if(num[0]!='0'):
temp+=a[int(num[0])]+' '
else:
temp+=' '
num=num[1:]
if len(num)>2:#
if(num[0]!='0'):
temp+=a[int(num[0])]+' '
else:
temp+=' '
num=num[1:]
if len(num)>1:#
if(num[0]!='0'):
temp+=a[int(num[0])]+' '
else:
temp+=' '
num=num[1:]
if len(num)==1:#
if(num[0]!='0'):
temp+=a[int(num[0])]
else:
temp+=' '
return temp
def Xiaoshu(num):
if len(num)==0:return ''
temp=' '
for i in num[1:]:
temp+=a[int(i)]
return temp
for line in sys.stdin:
print(num2chinese(line.strip()))