Шифр Цезаря проблема с завершением кода 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)
→ Ссылка