2016-08-08 38 views
0

Hier ist mein Code für eine einfache Caesar-Chiffre-Stil-Programm.Geringfügiges Problem bei der Verwendung von Wörterbuch und Isspace-Funktion

Es funktioniert ansonsten gut, aber es erkennt keine potenziellen Leerzeichen zwischen den vom Benutzer geschriebenen Wörtern.

Während das Programm die Buchstaben selbst korrekt übersetzt, druckt es alle Zeichen, die in einem einzigen Wort zusammengefasst sind, ohne Leerzeichen.

Ich habe versucht, das selbst zu lösen, aber stattdessen schreibt das Programm einen Fehlercode: "AttributeError: 'dict' object has no attribute 'isspace'".

Gibt es einen anderen Weg?

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

Was Sie 'wenn ch in key.isspace erwarten():' zu tun? – jwodder

+0

'key' ist Ihr Wörterbuch und' isspace() 'ist eine Funktion für Zeichenketten oder Zeichenklassen. Deshalb sollten Sie 'ch in key.ispace()' nicht verwenden, sondern nur 'ch.ispace()' –

+0

Sie könnten Ihrem 'key' dict auch einfach ein Leerzeichen hinzufügen. (Es würde zu einem einzigen Raum zuordnen.) –

Antwort

1

Ändern Sie die Zeile if ch in key.isspace():-if ch.isspace():

+0

Danke! Ich dachte mir, dass es einen einfachen Weg geben würde, den Wörterbuchteil zu umgehen, aber ich bin jetzt noch neu im Wörterbuch. – TMK87