2016-11-06 5 views
0

私は、テキストファイルを辞書に変換して質問するPythonの本の例を複製しようとしました入力機能による翻訳のために。Whileループは辞書の入力に割り当てられた値を与えるのではなく、入力を要求することを繰り返す

私の問題は、このプログラムでは、辞書にある特定の有効な入力の翻訳ができなくなることです。私がwhileループの代わりにif Trueを使用する場合、それは行います。私はコードを再配置しようとしましたが、それでも入力を求めて繰り返します。ここで

は、この問題の原因となるコードは次のとおりです。

genetischercode={} 

    while True: 
     triplet=input("Geben sie ein basentriplet ein: ") 

    with open("C:\\Users\\Christian\\Desktop\\Python-Programme\\Genetischer Code.txt","r") as fobj: 
     for line in fobj: 

     line=line.strip() 
     Zuordnung=line.split() 
     genetischercode[Zuordnung[0]]=Zuordnung[1] 


    if triplet in genetischercode: 
    print("Die korrespondierende Aminosäure ist: ",genetischercode[triplet]) 
    else: 
     print("Bitte geben sie ein gültiges Triplet ein: ") 

今の代わりif triplet in genetischer code:またはelse:トリガーばかりのそのIST何が起こる、プログラムは変数tripletのための入力を求めて繰り返されます。

どうすればこの問題を解決できますか?

+0

あなたはインデントを修正してもらえますか?これが何をすべきかを推測するのは難しいです。最初の 'while True'ループは無限ループになりますが、それはあなたがやっていることではないと思います。それともこの問題ですか? – martin

+0

「真」は「真」が「真」である限り継続します。ループは決して終わらないでしょう。すべてのコードを実行するには、このループ内になるようにインデントします。 –

+0

あなたの関心をお寄せいただきありがとうございました。字下げを修正し、コードが正しく動作します:-) –

答えて

1

インデントを増やして適切な場所に配置して、ループ本体にif triplet in…とそれに続く行を配置する必要があります。 (それはようにループで使用されるコードのブロック、if Sを作るための唯一の方法であり、以下のようにインデントはPythonプログラミングにおいて非常に重要であることに注意してください。)

genetischercode={} 

# we have to generate the dictionary only once 
with open("C:\\Users\\Christian\\Desktop\\Python-Programme\\Genetischer Code.txt","r") as fobj: 
    for line in fobj: 

     line=line.strip() 
     Zuordnung=line.split() 
     genetischercode[Zuordnung[0]]=Zuordnung[1] 
# now enter infinite loop 
while True: 
    triplet=input("Geben sie ein basentriplet ein: ") 

    # you probably want some way to exit the loop 
    if triplet == 'stop': 
     break 

    if triplet in genetischercode: 
     print("Die korrespondierende Aminosäure ist: ",genetischercode[triplet]) 
    else: 
     print("Bitte geben sie ein gültiges Triplet ein: ") 
+0

ありがとうございました:-)! –

+0

答えがあなたの質問に答えたら、答えの左側にあるチェックマークをクリックすることでそれを受け入れることができます。 –

関連する問題