Как ввести смещение для шифра Цезаря в Python

У меня есть этот код, который является базовым шифром Цезаря, смещение установлено на единицу, но я хочу, чтобы пользователь мог ввести смещение. Пользователь должен иметь возможность сказать, на сколько сдвинулся алфавит, но это не сработает, если offset = input

#Caesar cipher
sentance = input('Enter sentance: ')
alphabet = ('abcdefghijklmnopqrstuvwxyz')
offset = 1
cipher = ''

for c in sentance:
    if c in alphabet:
            cipher += alphabet[(alphabet.index(c)+offset)%(len(alphabet))]

print('Your encrypted message is: ' + cipher)

person hugo    schedule 18.09.2016    source источник


Ответы (1)


Вероятно, это потому, что вы не преобразовали ввод в целое число и практически заполнили offset строкой.

Используйте int(input()) для преобразования введенной строки в целое число (необязательно — также не забудьте добавить исходный символ, если он не в алфавите):

sentance = input('Enter sentance: ')
offset = int(input('Enter offset: '))
alphabet = ('abcdefghijklmnopqrstuvwxyz')
cipher = ''

for c in sentance:
    if c in alphabet:
        cipher += alphabet[(alphabet.index(c) + offset) % (len(alphabet))]
    else:
        cipher += c

print('Your encrypted message is: ' + cipher)

Будет производить:

Enter sentance: hello world!
Enter offset: 13
Your encrypted message is: uryyb jbeyq!
person Uriel    schedule 18.09.2016