Ceasar在python中的密码

时间:2017-02-21 10:39:14

标签: python caesar-cipher

我正在制作一个简单的程序,用于使用Ceasar的密码翻译文本。这是我的代码。

alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
text = "hello how are you"
text = text.split(" ")
new_text_array = []
key = 3
for w in range(len(text)):
    new_word_array = []
    word = list(text[w])
    for i in range(len(word)):
        if word[i] in alphabet:
            new_index = alphabet.index(word[i]) + key
            if new_index > 25:
                new_index -= 26
            new_word_array += alphabet[new_index]
    new_word = ''.join(new_word_array)
    print(new_word)
    new_text_array += new_word
    print(new_text_array)
new_text = ' '.join(new_text_array)
print(new_text)

当我运行代码时,在第20行,它正确地将加密的单词打印为字符串,但是在第21行,我在向数组添加单词,它将每个字母添加为数组中的单个项而不是添加整个字。我还是陌生的新手,我缺少什么?请帮忙。对不起我的英文,希望你能理解我想说的话。

1 个答案:

答案 0 :(得分:3)

您需要使用new_text_array.append(new_word)

new_text_array += new_word +=意味着您要将第二个数组的所有元素添加到第一个数组,因此Python迭代new_word,因为字符串也可以迭代new_word[x],并将其所有元素(此处的字母)添加为单独的元素。

此处的另一个选项是new_text_array += [new_word],您只需将new_word作为唯一元素放入数组中