Как указывалось другими, вы сбрасывали cipherText в итерации цикла for.Размещение cipherText до начала цикла for решит вашу проблему.
Кроме того, существует альтернативный подход к решению этой проблемы с использованием стандартной библиотеки Python.Стандартная библиотека Python определяет функцию maketrans () и метод translate, который работает со строками.
Функция maketrans () создает таблицы перевода, которые можно использовать с методом translate для замены одного набора символов на другой, болееэффективно.(Цитируется из стандартной библиотеки Python на примере).
import string
def caesar(plaintext, shift):
shift %= 26 # Values greater than 26 will wrap around
alphabet_lower = string.ascii_lowercase
alphabet_upper = string.ascii_uppercase
shifted_alphabet_lower = alphabet_lower[shift:] + alphabet_lower[:shift]
shifted_alphabet_upper = alphabet_upper[shift:] + alphabet_upper[:shift]
alphabet = alphabet_lower + alphabet_upper
shifted_alphabet = shifted_alphabet_lower + shifted_alphabet_upper
table = string.maketrans(alphabet, shifted_alphabet)
return plaintext.translate(table)