Python 有两个密钥的凯撒密码

Python Caesar cipher with two keys

我想用两个密钥写一个凯撒密码;一个用于元音,另一个用于辅音。

我有只有大写字母的单词。我写了一些代码,但我知道这是错误的。我想沿着这条路走。有人可以帮助我吗:

def ceasar(word, key1, key2): 
    c = "" 
    for i in range(len(word)): 
        zn = word[i]
        for x in zn:
                        if x=="A" or x=="E" or x=="I" or x=="O" or x=="U":
                                c += chr((ord(zn) + key1-65) % 26 + 65)                               
                else:
                                c += chr((ord(zn) + key2-65) % 26 + 65)


    return c

只考虑大写字母而不考虑其他字符,您可以通过稍微简化它来使其工作:

def caesar(word, key1, key2):
    c = ""
    for x in word:
        if x in "AEIOU":
            c += chr((ord(x) + key1 - 65) % 26 + 65)
        else:
            c += chr((ord(x) + key2 - 65) % 26 + 65)
    return c

你有两个循环,但在你的代码中这是不必要的,zn 只是一个字符,所以不需要第二个循环。

我已经简化了您的元音检查,因为您可以比使用多个 or 条件更简单地检查一个字符是否出现在字符串中。

在 Python 中更常见的是按值循环迭代器,而不是循环索引然后使用该索引值访问迭代器。