Python词典' '关键错误

时间:2016-03-23 16:47:39

标签: python

error showed 我在尝试循环字典时遇到了一个关键错误。如果有人能告诉我我做错了什么,那将会很有帮助。我正在尝试制作一个基本的" Caesar密码",一种解码偏移量为13的消息的方法。:)

ceasar = {'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 ceasar_cipher(encoded):
    encoded = encoded.lower()
    decoded = ""
    for letter in encoded:
        if letter == "?" or letter == "!":
            decoded += letter
    for letter in encoded:
        ceasar[letter] += decoded
        print decoded

2 个答案:

答案 0 :(得分:0)

这是另一种方法,你能给我们一些样本输入和输出吗?你想对你的凯撒字典中没有的字符做什么:

caesar = {'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 caesar_cipher(encoded):
    print("".join(caesar.get(letter, letter) for letter in encoded.lower()))

答案 1 :(得分:0)

我想你想要

ceasar = {'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 ceasar_cipher(encoded):
    encoded = encoded.lower()
    decoded = ""
    for letter in encoded:
        if letter in ceasar.keys():
            decoded += ceasar[letter]
        else:
            decoded += letter
    print decoded

这会保留空格,标点符号以及翻译字典中没有的任何其他字符。