基本的な練習のPythonブルーブリッジカップ読み取り値の数

実際の発音に基本的な質問の数

リソースの制約は
時間が限界:1.0秒メモリ制限:512.0メガバイト
問題の説明
  教授トムは遺伝子上の大学院コースを教えることである、一つのことは彼にかなりの頭痛の種を作った:染色体上の塩基対の数万人があり、彼ら何百万人に0から番号を、何百万、あるいは数百億。
  例えば、時の位置番号1234567009の塩基程度の学生が、光ルックスの数字を正確に読み出すことは困難です。
  だから、彼は必死にシステムを必要とし、彼は1234567009時間に入ったときに、法律を読んで対応する与える:
  1234567009
  ピンインとして表さ
  市のER YIさん銭SI BAI呉市劉チーワン銭玲の柔術を
  、彼はそれだけで輝いて読み取る必要があるので。
  数字の文字列を考えると、あなたが読んで格子オープンスペースと隣接する2つの音節の規範と中国語ピンイン文字列に従ってを書くに彼を助ける:あなたの仕事は、彼がこのようなシステムを設計支援することです。
  注意「「Yiは玲市WAN」の代わりに「市リンYIのWAN YI」として読み取られるような「10010」などの仕様に厳密に従っ、でなければなりません 100000」 の代わりに「WAN市」「市YI WAN」が読み出され、「2000 」 リード「えー銭」の代わりに「梁銭」など。
入力フォーマットは、
  数字のシーケンスではなく、より2,000,000,000以下の数値的な大きさを有しています。
出力フォーマットは、
  小文字、スペースやコンマ組成の列は、英語の読みの数を表しています。
サンプル入力
1234567009
サンプル出力
市のERイ・サン銭SI監査院の呉市劉淇銭玲柔術ワン
アイデア
百万、千にビットからは千万にすべての4からのものであった...... Readメソッド'は同じですが、後ろに追加ワン「または」YI」。そのため、撮影したすべての4時間のリストに文字列全体の後方には、桁のreadメソッドの関数を記述します。ターンコール読取機能の要素のリストを、追加する前にビット右に応じて「WAN」または「YI」。

d = {'1':'yi', '2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu','0':'ling'}
n = input().strip()
a = []
b = [] #b存的是逆序的读法,最后再逆序输出即为结果
def dushu(i): 
    i = i[::-1]
    for j in range(len(i)):
        if j == 0:
            if i[j]!='0':
                b.append(d[i[j]])
        elif j == 1:
            if i[j]=='0'  and  i[0]!='0':
                b.append(d['0'])
            elif i[j] == '1' and ( len(i)==2 or i[2] == i[3] == '0'):
                b.append('shi')
            elif i[j]!='0':
                b.append('shi')
                b.append(d[i[j]])
        elif j == 2:
            if i[j]=='0'  and i[1]!='0':
                b.append(d['0'])
            elif i[j]!='0':
                b.append('bai')
                b.append(d[i[j]])
        elif j == 3:
            if  i[j]!='0':
                b.append('qian')
                b.append(d[i[j]])
            elif i[j]=='0'  and i[2]!='0':
                b.append(d['0'])

while n!='':  #倒着读,每四位为一组字符串
    if len(n)>=4:
        s = n[-4:] #取后四位
        n = n[:-4] #删除后四位
        a.append(s) 
    else:
        a.append(n)
        n = ''
for i in range(len(a)):
    if i == 0:
        dushu(a[i])
    elif i == 1:
        b.append('wan')
        dushu(a[i])
    elif i == 2:
        b.append('yi')
        dushu(a[i])
for i in range(len(b)-1,-1,-1):
    if i == len(b)-1:
        print(b[i],end='')
    else:
        print(' %s'%(b[i]),end='')
リリース5元の記事 ウォンの賞賛0 ビュー235

おすすめ

転載: blog.csdn.net/qq_29922685/article/details/104887547