Ошибка TypeError: ‘int’ object is not subscriptable
Дан набор из N целых положительных чисел. Для каждого числа вычисляется сумма двух последних цифр в его десятичной записи (для однозначных чисел предпоследняя цифра считается равной нулю). Необходимо определить, какая сумма при этом получается реже всего (но не менее одного раза). Если таких сумм несколько, необходимо вывести наименьшую из них.
Написал код, который при выполнении выдает ошибку TypeError: ‘int’ object is not subscriptable
1 2 3 4 5 6 7 8 9 10 11
N = int(input()) a = [0] * 19 x = 0 for i in range (N): a = int(input()) x = a%10 + a//10%10 a[x] = a[x] + 1 for i in range (N): if a[i] >= max(a): maxIndex = i print (maxIndex)
Поиск по ошибке ничего мне не дал, поэтому начал искать решение задачи. Наткнулся на программу, которая, как мне кажется, ничем не отличается от моей, но исправно работает:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
a=[0]*19 N=int(input()) m=0 for i in range(0,N): sum=0 n=int(input()) sum=n%10+((n//10)%10) a[sum]=a[sum]+1 imx=0 for i in range(0,19): if a[i]>=m: m=a[i] imx=i print(imx)
Подскажите, в чем ошибка в моей программе и каких различий я не вижу.
Спасибо!
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Ошибка TypeError: ‘int’ object is not subscriptable
b = ]]]] print(a) Вот сам код не понимаю почему выходит ошибка
TypeError: ‘int’ object is not subscriptable
a = b = n = int ( input()) n-=1 for i in range ( 0 , n ): a = int (input()) b = int.

TypeError: ‘int’ object is not subscriptable
i = l = z = 0 dlina = 0 for l in l: dlina=dlina+l*2 z=z+1 print(dlina, z) .

TypeError: ‘int’ object is not subscriptable
a = int(input()) lat = lst = for i in range(a): lst.append(i) if int(i) >= 4: .
![]()
103 / 91 / 32
Регистрация: 30.05.2015
Сообщений: 594
Регистрация: 06.06.2019
Сообщений: 9
Поставил скобки — вылетает с той же ошибкой
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
rawl1, Вторая программа считает не верно, так что не ориентируйтесь на нее.
Добавлено через 15 минут
rawl1, В Вашем коде Вы вначале присваиваете переменной «a» список из 19 нулей, а затем в цикле присваиваете этой переменной число. Но к числу не применимо индексирование, поэтому a[x] выдает ошибку. Вы должны присваивать вводимое число другой переменной.
Регистрация: 06.06.2019
Сообщений: 9
Viktorrus, но тогда почему такая же строка во второй программе
a[sum]=a[sum]+1
не выдает ошибку?
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6

Сообщение было отмечено rawl1 как решение
Решение
rawl1,
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
import collections N = int(input('Укажите количество чисел: ')) L = [] for i in range (N): n = int(input('Введите число: ')) s = n%10+((n//10)%10) L.append(s) l = collections.Counter(L).most_common() mr = l[-1][1] mrMin = l[-1][0] for (x, y) in l: if y == mr and x mrMin: mrMin = x print(mrMin)
Добавлено через 6 минут
rawl1, Во второй программе вводимое число присваивается переменной «n», а не переменной «a», как у Вас. Поэтому там и не ругается. Но алгоритм второй программы не соответстует Вашему условию задачи. Это видно хотя бы из того, что там не ищется минимум, который требуется из Вашего условия.
Добавлено через 4 минуты
Во второй программе «a» остается списком, а не превращается в число, как у Вас. Поэтому вторая программа и не ругается.
a[sum] там допустимая операция извлечения значения из списка по индексу.
Добавлено через 2 минуты
Сообщение от rawl1 
Python — ошибка «TypeError: ‘int’ object is not subscriptable»
Что делать, если столкнулись с ошибкой “TypeError: ‘int’ object is not subscriptable” в Python?
Скорее всего вы пытаетесь обратиться к переменной по индексу, подразумевая что это массив, а на самом деле в переменной записано целое число. Первым делом проверьте содержимое переменной, на которую указывает ошибка (посмотрите, на какую строку кода указывает отладчик).
Комментарии
Комментариев пока нет, вы можете оставить свой:
О проекте
Основная цель проекта — делиться полезной информацией. Если вы тоже знаете что-то полезное (не обязательно по программированию) — поделитесь с другими!
Добавить заметку
Для возможности добавлять заметки необходимо войти или зарегистрироваться
Ошибка «int’ object is not subscriptable» при попытке обращения к элементу кортежа
Кстати, а в чём смысл алгоритма? И вас не смущает, что вы за один шаг добавляете в список по три элемента, а счетчик увеличиваете на 1?
15 сен 2017 в 2:39
Смысл в поиске минимального числа итераций для преобразования одного числа в другое путём 3х арифметических операций. Например: Получить из 2 число 100 с помощью операций +3, *2, -1.
16 сен 2017 в 9:51
интересная задачка, есть идея решить её как задачу поиска маршрута.
16 сен 2017 в 10:36
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
В чем смысл и причина ошибки
Ошибка «‘X’ object is not subscriptable» означает, что вы пытаетесь обратиться к объекту типа X по индексу, но этот тип не поддерживает обращение по индексу. Например, 1[0] не имеет смысла.
После первой итерации цикла переменная ways содержит значение [(2, 0), 5, 1, 4, 1, 0, 1] . Заметно, что добавлялись не кортежи, а просто числа. Код обращается к этим числам по индексу, что и приводит к нашей ошибке.
Почему не добавляются кортежи? Дело в сигнатуре метода extend :
extend(self, iterable): .
Этот метод принимает iterable , итерирует и каждое полученное значение добавляет в список. В вашем примере он получает кортеж из двух чисел и добавляет в список эти числа.
Как добавить кортеж в список одним элементом
Проще всего будет использовать метод append , который принимает 1 объект.
ways.append((first_op(ways[ind][0]), ind + 1))
Можно также создать новый кортеж или список из одного элемента, как рекомендуется в соседнем ответе.
# кортеж из одного элемента: (a,) # запятая обязательна! ways.extend( ( (first_op(ways[ind][0], ind + 1), ) ) # список из одного элемента: [a] ways.extend( [ (first_op(ways[ind][0], ind + 1) ] )
object is not subscriptable в Python 3 — что это значит
это значит, что ты обращаешся к объекту, который не является контейнером как к контейнеру.
короче
>>> x = [1,2,3]
>>> y =
>>> x[1]
2
>>> y[1]
1
>>> k = 3
>>> k[1]
Traceback (most recent call last):
File «», line 1, in
TypeError: ‘int’ object is not subscriptable
что за контенер сам разбирайся
список, словарь, кортеж это базовые
и строка еще
Остальные ответы
ты бы не мог полностью текст написать и сказать где у тебя вылезла такая ошибка
Ты не можешь обратиться к числу, имеющему тип данных int, по индексу.