【发布时间】:2018-07-29 22:11:20
【问题描述】:
我尝试更改我的 Vigenere 程序,使其输出带有空格的消息。 它应该这样做: translateMessage('JPZFR DTZA NKC HFHOUC', '多云', 'd') => '来自未来的你好'
def translateMessage(message, key, mode):
translated = ''
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
keyIndex = 0
message = message.upper()
key = key.upper()
for symbol in message:
xyz = alphabet.find(symbol.upper())
if xyz != -1:
if mode == 'encrypt' or 'e':
xyz += alphabet.find(key[keyIndex]) + 1
elif mode == 'decrypt' or 'd':
xyz -= alphabet.find(key[keyIndex]) + 1
xyz %= len(alphabet)
if symbol.isupper():
translated += alphabet[xyz]
elif symbol.islower():
translated += alphabet[xyz].lower()
keyIndex += 1
if keyIndex == len(key):
keyIndex = 0
else : translated += symbol #this will add space as it is
return translated
相反,它给出了这个: translateMessage('JPZFR DTZA NKC HFHOUC', '多云', 'd') => 'MBOAV CWLP IOB KRWJYB'
【问题讨论】:
-
请注意:您可以使用 string.ascii_uppercase 而不是
alphabet -
问题是什么?您是否尝试过在循环中打印以查看可能发生的情况?
标签: python python-3.x encryption vigenere