Шифр Цезаря. Символы строки должны циклически сдвигаться на +1 каждой строки

import string

with open('text.txt', 'r', encoding='utf8') as text:
    text_translate = text.read()
    
delta = 1 # смещение
lower = (string.ascii_lowercase[delta:] + string.ascii_lowercase[:delta])
translate = {ord(a): d for (a, d) in zip(string.ascii_letters, (lower + lower.upper()))}
result = str.translate(text_translate, translate)

print(result)

У меня не переходит смещение на следующую строку, дано: text.txt файл, в нем 4 строки с текстом Hello Результат должен быть вот таким:

Ifmmp
Jgnnq
Khoor
Lipps

А у меня вот так :(

Ifmmp
Ifmmp
Ifmmp
Ifmmp

Ответы (1 шт):

Автор решения: CrazyElf

Ну, наверное, тогда нужно в цикле чтения файла сдвиг менять:

import string

with open('text.txt', 'r', encoding='utf8') as text:
    for delta, text_translate in enumerate(text.readlines(), 1):
        lower = (string.ascii_lowercase[delta:] + string.ascii_lowercase[:delta])
        translate = {ord(a): d for (a, d) in zip(string.ascii_letters, (lower + lower.upper()))}
        result = str.translate(text_translate, translate)

        print(result)
→ Ссылка