Im пытается создать шифр Vigenère, но я не могу найти способ реализовать функцию, которая игнорирует заполненные пробелы при вводе сообщения, а затем например, печатать окончательный: я вводил начальное сообщение: «python computing», затем я вводил ключ как «стек», который я ожидаю получить, если программа игнорирует пробелы в исходном сообщении: «isukzg wppannjqr», но вместо этого я получаю: isukzgwppannjqr». Кто-нибудь знает, как я могу это решить. Я рассмотрел использование ords, но я не нашел способ его реализовать. Код ниже:Как я могу заставить мои Vigenère Cipher игнорировать пробелы в исходном сообщении
def translateMessage(key, message, mode):
translated = ""
keyIndex = 0
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
return translated
if __name__ == '__main__':
fetch_user_inputs()
Вы явно игнорировать все символы, не найденные в '' alphabet' (хуг = alphabet.find (symbol.upper()) ',' if xyz! = -1: '), который включает игнорирование пробела. Почему вы ожидаете, что у вас будет свободное место на вашем выходе, если вы проигнорируете его добавление? –
Как мне разрешить пробелы? Будет ли использовать x.isspace()? – user5670271
'mode == 'decrypt' или 'd'' должен быть' mode ==' decrypt 'или mode ==' d''или' mode в ['decrypt', 'd'] '. Также рассмотрите '' decrypt'.startswith (mode) '. –