Листая одну замечательную книгу столкнулся с ошибкой
Код
import pyperclip message = "Xqp whh ahoa kb pda sknhz swo ejreoexha." key = 22 mode = 'decrypt' translated = '' num = 0 LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' message = message.upper() for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) if mode == 'encrypt': num = num + key elif mode == 'decrypt': num = num - key if num >= len(LETTERS): num = num - len(LETTERS) elif num <= 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol print(translated) pyperclip.copy(translated)
Ошибка
Traceback (most recent call last): File "C:\python\caesar.py", line 22, in <module> translated = translated + LETTERS[num] IndexError: string index out of range
Не пойму где конкретно возбуждается проблема :с
Насколько я понял идёт обращение к несуществующему индексу строки LETTERS (в смысле к тому индексу, в котором нет никакого значения), а конкретно к 26му. По крайней мере в консоли после исполнения модуля значение num = 26.
Так как строка с сообщение в данном случае достаточно короткая, num=26 только в случае если к этому моменту
if num >= len(LETTERS): num = num - len(LETTERS) elif num <= 0: num = num + len(LETTERS)