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()))