2012-02-14 18 views
0

数値を文字列に変換して単語を形成する必要があります。例:プログラムへの入力が1920012532082114071825463219200125320615151209190846の場合は、空腹になります。愚かでいなさい。数値の文字列をPythonに変換する

私は数字の文字列に単語を変換するプログラムを持っている:

string = raw_input('Please enter your string of lowercase characters: ') 

Dictionary = {'a':'00', 'b':'01', 'c':'02', 'd':'03', 'e':'04', 'f':'05', 
       'g':'06', 'h':'07', 'i':'08', 'j':'09', 'k':'10', 'l':'11', 
       'm':'12', 'n':'13', 'o':'14', 'p':'15', 'q':'16', 'r':'17', 
       's':'18', 't':'19', 'u':'20', 'v':'21', 'w':'22', 'x':'23', 
       'y':'24', 'z':'25', ' ':'32', '.':'46'} 

n = '' 

p= 0 

for character in string: 
    n += Dictionary[string[p]] 
    p += 1 

print n 

だから私は、数字の文字列を受け取りプログラム(n)を作成し、元の単語に戻ってそれを変換する必要があります。

ここで何をすべきかわからないので、助けてください!

+1

SOは "私の宿題をする"サイトではありません。 – millimoose

+0

あなたの辞書が間違っています。 'a'は' 01'でなければなりません。そうでなければ、その文字列は 'tubz i'などと言うでしょう... –

+2

downvotesとは何ですか?質問に「それは私のために」と言われていますが、彼は明らかに何らかの助けを求めています – yurib

答えて

0

キーと値を持つ辞書を作成するには、逆転:

revdict = dict([v,k] for k,v in Dictionary.items()) 

は、一度に入力された2つの文字をスキャンし、逆辞書を使用して変換します。 あなたは、文字列の異なる部分にアクセスするためにインデックスを使用することができますに注意してください:すべての

"12345"[0:2] # returns "12" 
0

まず、あなたがインデックスによって文字にアクセスする必要はありません、あなたのループ内で定義されたcharacter変数は、実際にそれぞれの格納

for character in string: 
    n += Dictionary[character] 

その後、あなたはどちらかpを必要としない:それは前方に移動するように、文字。

今、あなたの質問に上:

ord()メソッドは、指定された文字のASCII表現を取得します。 Googleのasciiテーブルを参照してこれを知ってください。

次に、前に示唆したように、一度に2文字ずつ繰り返して(インデックスで反復すると便利です)、それらの値を整数に変換してからその整数に変換するだけですキャラクター。

私は完全なアルゴリズムを投稿しようとしていました。しかし、私はそれが宿題であるかもしれないことに気付きました。いずれにしても、ここで私があなたに与えたことは十分であるはずです。

関連する問題