vigenere键看空格

时间:2017-08-29 16:13:42

标签: python loops spaces vigenere

编写Caesar和Vigenere密码。

我的代码工作正常(我认为)。

我对代码的关注,文本中有空格。我需要钥匙拿起,移动空间,并在有另一个角色时返回...

Ex: $ python vigenere.py Type a message: 'The crow flies at midnight!' Encryption key: boom Correct output: Uvs osck rmwse bh auebwsih! output I receive: uvs drow tzufs mu muenwsit

你可以看到序列丢失后的第一个单词,因为它将m键应用于没有字符的空格... 我希望这是有道理的。

这是我的代码。我在第30行尝试纠正这个问题,但它没有帮助。 (如果文字中的字母=='':             starting_index = starting_index - 1)

import string

def alphabet_position(letter):

if letter.isupper():
    letter = ord(letter) - 65
else:
    letter = ord(letter) - 97
return letter
def rotate_character(char, rot):
alpha = 'abcdefghijklmnopqrstuvwxyz'
new = alphabet_position(char) + rot
if char.isupper():
    if new < 26:
        new = new + 65
        return chr(new)
elif new < 0 :
    return char
elif new >= 26:
    return char
else:
    new = new + 97
    return chr(new)
def encrypt(text, key):
alpha = ['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']
encrypted = []
starting_index = 0
for letter in text:
    if letter in text == ' ':
        starting_index = starting_index - 1

    rotation = alphabet_position(key[starting_index])

    if not letter in alpha:
        encrypted.append(letter)
    elif letter.isalpha():
        encrypted.append(rotate_character(letter, rotation))

    if starting_index == (len(key) - 1):
        starting_index = 0
    else:
        starting_index += 1

return ''.join(encrypted)

0 个答案:

没有答案