2016-09-07 5 views
0

これは、EngディクショナリがTucと同じであるかのように表示されるようになった後に終了したことです。このプログラムは英語の言葉をトゥシンに翻訳しますが、私の人生ではトゥシンを英語に翻訳することはできません。保存されていない単語が入力された場合は、単語自体を印刷するように設定しています。しかし、私はそれが格納された英語の単語ではない場合、elifを起動させて、それをelse条件にまっすぐに行くことさえできません。逆翻訳辞書Python

Tuc={"i":["o"],"love":["wau"],"you":["uo"],"me":["ye"],"my":["yem"],"mine":["yeme"],"are":["sia"]} 
Eng = {t: e for t, e in Tuc.items()} 
print "ENG" 
print Eng 
print "TUC" 
print Tuc 
phrase=True 
reverseLookup = False 

while phrase == True: 
    translation = str(raw_input("Enter content for translation.\n").lower()) 
    input_list = translation.split() 


    for word in input_list: 

     #English to Tuccin 
     if word in Tuc: 
      print ("".join(Tuc[word]))+" *English>>Tuccin" 

     #Tuccin to English 
     elif word in Eng: 
      print ("".join(Eng[word]))+" *Tuccin>>English" 

     else: 
      print word+" *Word Not Stored" 
+1

Typo:あなたは 'e:t'ではなく' t:e'でしたので、あなたはその辞書のコピーで終わります。また、リストに文字列を入れないでください。アイテムは1つしかないため、辞書を逆にすることができません。 – TigerhawkT3

+0

単語のすべての文字を単語に結合することは、冗長な操作です。例えば'(" ".join(Tuc [word]))' Tuc [word] 'を使うことができます。また、必要でないときにリストを使用しないでください。 – TigerhawkT3

答えて

0

あなたは、それが現在設定されている方法で、EngTucは同じです。何がしたいことはサイドノートとして

>>> Eng = {e[0]: [t] for t, e in Tuc.items()} 
>>> Eng 
{'yem': ['my'], 'ye': ['me'], 'uo': ['you'], 'o': ['i'], 'sia': 'are'], 'yeme': ['mine'], 'wau': ['love']} 

であるように思え、そこに彼らはすべての単一の文字列が含まれているので、ハッシュリストに値をする必要が本当にないのですが、それは大したことではないのです。

0

あなたはそこまでタイプミスがあります

Eng = {e[0]: [t] for t, e in Tuc.items()} 
0

あなたは代わりに、Pythonのと2

注意を

eng = {v[0]: [k] for k, v in tuc.items()} 

またはiteritems()を行うべき:

while phrase == True 

あなたは:このエラーを修正しながら、

while phrase 
0

あなたは(あなたが代わりにそれを逆転させるの辞書をコピーした)あなたのコードはかなりをクリーンアップすることができます

Tuc={"i":"o", "love":"wau", "you":"uo", "me":"ye", "my":"yem", "mine":"yeme", "are":"sia"} 
Eng = {e:t for t, e in Tuc.items()} 
print "ENG" 
print Eng 
print "TUC" 
print Tuc 
phrase=True 

while phrase: 
    translation = raw_input("Enter content for translation.\n").lower() 
    phrase = translation.split() # empty input will break the loop 

    for word in phrase: 
     print Tuc.get(word, Eng.get(word, 'Word Not Stored')) 
0

このバージョンでは、各単語が複数の翻訳を持つことになりますと仮定し(それはです