Задать вопрос
@ArmBoy28
фотограф, студент информационной безопасности

Ошибка TypeError: 'int' object is not subscriptable в списке, как решить данную проблему?

Написал код для нахождения ключа в Шифре Вижинера, но выводит такую ошибку:

a = (text_char_code[i] - chiper_char_code[i]) % len(alpha1)
         ~~~~~~~~~~~~~~^^^
TypeError: 'int' object is not subscriptable

Как с этим можно справиться? Перепробовал несколько вариантов с присвоением типа переменной, но почему-то не выходит.

Вот исходный код:

alpha1 = list('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')
text = 'имитостойкость'
cipher_text = 'щхыяяъеыъубюге'
key = " "

def get_key(text_char: str, i, cipher_char: str, alpha: list[str]) -> str:
  if text_char not in alpha1: # Находит незнакомый символ и оставляет как есть
    return text_char
  text_char_code = alpha1.index(text_char) # Находит символ открытого текста
  chiper_char_code = alpha1.index(cipher_char) # Находит символ зашифрованного текста
  for i in text_char:
    global a
    a = (text_char_code[i] - chiper_char_code[i]) % len(alpha1) #  Находит ключ


for i in range(len(text)):
  key = key + str(get_key(text[i], i, cipher_text[i], alpha= alpha1)) #сохраняет ключ
  print(key)
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
belokopytova
@belokopytova
text_char_code = alpha1.index(text_char) в text_char_code будет хранится число int, так же и с chiper_char_code - там тоже int

text_char_code[i] - chiper_char_code[i] поэтому обратиться по индексу здесь не получится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
Учись отладке, сделай перед строкой с ошибкой print(text_char_code) и помедитируй над выводом. Ну текст ошибки достаточно ясно описывает проблему, просто переведи его
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Перечитайте, что возвращает метод строк .index - явно не то, что вы ожидаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы