2016-08-08 9 views
0

シーザーのシンプルな暗号スタイルプログラムのコードです。辞書とisspace関数を使用する際のマイナーな問題

これはうまくいきますが、ユーザーが書き込んだ単語間の潜在的なスペースを認識しません。

プログラムは文字自体を正しく翻訳しますが、スペースを省略して、すべての文字をクラスタ化して1つの単語にまとめて出力します。

私はこれを自分で解決しようとしましたが、代わりにエラーコード: "AttributeError: 'dict' object has no attribute 'isspace'"を書き込みました。

別の方法がありますか? key.isspace中のCH場合

key = {'a':'n', 'b':'o', 'c':'p', 'd':'q', 'e':'r', 'f':'s', 'g':'t', 
     'h':'u', 'i':'v', 'j':'w', 'k':'x', 'l':'y', 'm':'z', 'n':'a', 
     'o':'b', 'p':'c', 'q':'d', 'r':'e', 's':'f', 't':'g', 'u':'h', 
     'v':'i', 'w':'j', 'x':'k', 'y':'l', 'z':'m', 'A':'N', 'B':'O', 
     'C':'P', 'D':'Q', 'E':'R', 'F':'S', 'G':'T', 'H':'U', 'I':'V', 
     'J':'W', 'K':'X', 'L':'Y', 'M':'Z', 'N':'A', 'O':'B', 'P':'C', 
     'Q':'D', 'R':'E', 'S':'F', 'T':'G', 'U':'H', 'V':'I', 'W':'J', 
     'X':'K', 'Y':'L', 'Z':'M'} 


def change(message, new_message): 

    for ch in message: 
     if ch in key: 
      new_message += key[ch] 
     if ch in key.isspace(): 
      new_message += " " 
    return new_message 

def main(): 

    print 
    message = input("Type your message here.\n") 
    new_message = "" 
    print(change(message, new_message)) 

main() 
+1

に何を期待していないライン '():'行うには? – jwodder

+0

'key'はあなたの辞書で、' isspace() 'は文字列または文字クラスの関数です。したがって、 'ch.isspace()'ではなく 'ch.isspace()'だけで 'ch 'を使うべきではありません。 –

+0

' key'ディクテーションにスペースを簡単に追加することもできます。 (単一のスペースにマップされます) –

答えて

1

変更if ch in key.isspace():if ch.isspace():

+0

ありがとう!私は、辞書部分を "バイパス"する簡単な方法があると思っていましたが、私は今のところ辞書のものにまだ慣れていません。 – TMK87

関連する問題