Шифр Цезаря проблема с завершением кода Python, русский алфавит
я смотрел видео где код был точно таким же и не понимаю в чем ошибка, по идее код должен выводить зашифрованный текст например введу "a" и "1" он выводит "б" все правильно но он выводит в слове только последнию букв то есть если, "Ник" и "1" ответ получается "л" но должен быть "ойл"
alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
encrypt = input("Введите смс которое будет зашифровано: ")
key = int(input("Введите цифру от 1 до 32: "))
encrypt = encrypt.lower() # ABC --> abc
encrypted = ""
for words in encrypt:
position = alphabet.find(words)
new_position = position + key
if words in alphabet:
encrypted = encrypted + alphabet[new_position]
else:
encrypted = encrypted + words
print("Зашифрованное сообщение выглядит так:", encrypted)
Ответы (1 шт):
Автор решения: RomanR
→ Ссылка
В Python важны отступы строк. Вложенные инструкции объединяются в блоки по величине отступов. Вам нужно задать отступы строк, как в коде ниже. Иначе условия не выполняются в цикле. И результат выводится только для последней буквы
alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
encrypt = input("Введите смс которое будет зашифровано: ")
key = int(input("Введите цифру от 1 до 32: "))
encrypt = encrypt.lower() # ABC --> abc
encrypted = ""
for words in encrypt:
position = alphabet.find(words)
new_position = position + key
if words in alphabet:
encrypted = encrypted + alphabet[new_position]
else:
encrypted = encrypted + words
print("Зашифрованное сообщение выглядит так:", encrypted)