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()
Was Sie 'wenn ch in key.isspace erwarten():' zu tun? – jwodder
'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()' –
Sie könnten Ihrem 'key' dict auch einfach ein Leerzeichen hinzufügen. (Es würde zu einem einzigen Raum zuordnen.) –