Добавление списка работает для первой итерации, но после того, как я получу индекс списка вне диапазона - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь изменить шифр Цезаря. Всякий раз, когда я начинаю смещать символ в зависимости от позиции в алфавите, он выдает ошибку «Список индексов вне диапазона».

password = input('type in the word you want to turn into a password: ')
shift = int(input('What do you want your caesar shift to be? '))
new_password = []

password = list(password)
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
            'v', 'w', 'x', 'y', 'z']
i = 0
for num in range(0, len(password)):
    for letter in alphabet:
        i += 1
        if password[num] == letter:
            move = i
            new_password.append(alphabet[(move + shift) - 1])
            print(new_password[num])

Я ожидал, что эта программа продолжит добавлять буквы в new_password на основекак долго был первый пароль. Однако после первой буквы я получаю «индекс списка вне диапазона»

1 Ответ

0 голосов
/ 06 ноября 2019

Здесь происходит то, что ваши значения move и shift оказываются вне значений индекса, доступных в alphabet. Вам нужно будет добавить специальные случаи для переноса по индексам, когда (move + shift) - 1 больше длины алфавита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...