python 中的凯撒密码

Ceasar's cipher in python

我正在制作一个用 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 行,我将单词添加到数组,它将每个字母添加为一个单独的项目在数组中而不是添加整个单词。我对 python 还是很陌生,我错过了什么?请帮忙。对不起我的英语,希望你能明白我想说的。

您需要使用 new_text_array.append(new_word).

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

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