Python vigenere密码-未添加正确的值

Python vigenere密码-未添加正确的值,python,python-3.x,for-loop,encryption,vigenere,Python,Python 3.x,For Loop,Encryption,Vigenere,我想从for循环中获取特定值,添加到另一个字符串中,以创建vigenere密码 这是密码 userinput = input('enter message') keyword = input('enter keyword') new = '' for a in keyword: pass for i in (ord(x) for x in userinput): if 96 < i < 123: #lowercase new += chr(97 + (

我想从for循环中获取特定值,添加到另一个字符串中,以创建vigenere密码

这是密码

userinput = input('enter message')
keyword = input('enter keyword')
new = ''
for a in keyword:
   pass
for i in (ord(x) for x in userinput): 
    if 96 < i < 123: #lowercase
        new += chr(97 + (i+ord(a)-97)#keeps all values in alphabet
print(new)
userinput=input('enter message')
关键字=输入('输入关键字')
新=“”
对于in关键字:
通过
对于i in(ord(x)对于x in userinput):
如果96
因此,我想要的答案是,如果我把‘abcd’作为我的信息,把‘ab’作为我的关键词,那么我想要的结果是‘bddf’,因为‘a’+‘a’是‘b’,而‘b’+‘b’=‘d’等等。我将如何更改代码以匹配我想要的结果,或者我必须完全更改代码,我将如何进行更改。

试试这个(你缺少了
mod 26
-部分):

如果你喜欢列表理解,你也可以写

def vigenere(plaintext, keyword):
    keystream = cycle(keyword)
    return ''.join(add_chars(pln, key)
                    for pln, key in zip(plaintext, keystream))
更新


根据
a+a=b
的愿望进行了更新。注意
z
在这种情况下是添加的中性元素(
z+char=z
)。

当我将97更改为96时,它工作得非常好。请您添加注释,请更新。谢谢更正。请注意
z
的特殊情况。
def vigenere(plaintext, keyword):
    keystream = cycle(keyword)
    return ''.join(add_chars(pln, key)
                    for pln, key in zip(plaintext, keystream))