Python练习Vigenère代码

时间:2016-12-15 09:46:34

标签: python vigenere

我对以下代码有疑问:

ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

def main():
 encrypt_code = codeer('NOBODY EXPECTS THE SPANISH INQUISITION!', 'CIRCUS')
 print("{}".format(encrypt_code))
 print("{}".format(decrypt('CIRCUS', encrypt_code)))

def codeer(tekst, sleutel):
 pairs = zip(tekst, cycle(sleutel))
 code = ""

 for pair in pairs:
    total = reduce(lambda x, y: ALPHA.index(x) + ALPHA.index(y), pair)
    code += ALPHA[total % 26]

 return code;

此代码将崩溃,因为该消息包含一个空格和一个!标志。

  

total = reduce(lambda x,y:ALPHA.index(x)+ ALPHA.index(y),pair)   ValueError:找不到子字符串

任何人都可以帮我解决我的问题

以下是预期输出的示例:

codeer('NOBODY EXPECTS THE SPANISH INQUISITION!', 'CIRCUS')
'PWSQXQ MORYUVA VBW AGCHAUP KHIWQJKNAQV!'

decodeer('PWSQXQ MORYUVA VBW AGCHAUP KHIWQJKNAQV!', 'CIRCUS')
'NOBODY EXPECTS THE SPANISH INQUISITION!'

1 个答案:

答案 0 :(得分:0)

在我看来,您只需要在有问题的字符是大写字母时进行编码/解码。请参阅下面的示例,了解我的想法。

site:domainname

您可以观察其执行here。它似乎产生了所需的输出。