2016-08-08 18 views
0

這是我的代碼,用於一個簡單的凱撒密碼風格程序。使用字典和isspace函數的小問題

否則它可以正常工作,但它不會識別用戶寫入的單詞之間的潛在空間。

雖然程序正確翻譯了字母本身,但它將聚集在一起的所有字符打印在一個字中,省略了空格。

我試圖自己解決這個問題,但是程序寫了一個錯誤代碼: 「AttributeError: 'dict' object has no attribute 'isspace'」。

還有別的辦法嗎?

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

你有什麼期望行'如果CH在key.isspace():'怎麼辦? – jwodder

+0

'key'是你的字典,'isspace()'是字符串或字符類的函數。因此,你不應該在key.isspace()中使用'ch,而只使用'ch.isspace()' –

+0

你可以很容易地爲你的'key'字典添加一個空格。 (它會映射到單個空間。) –

回答

1

變化if ch in key.isspace():if ch.isspace():

+0

謝謝!我在想會有一種簡單的方法來「繞開」字典部分,但我仍然對字典的東西不熟悉。 – TMK87