Автор оригинала: Team Python Pool.
Как решить TypeError: объект ‘int’ не поддается подписке
Вступление
Некоторые объекты в python являются подписными. Это означает, что они удерживают и удерживают другие объекты, но целое число не является объектом с подпиской. Мы используем целые числа, используемые для хранения целых числовых значений в python. Если мы рассматриваем целое число как объект с возможностью подписки, оно вызовет ошибку. Итак, мы будем обсуждать конкретный тип ошибки, которую мы получаем при написании кода на python, то есть TypeError: объект ‘int’ не является подписываемым. Мы также обсудим различные методы преодоления этой ошибки.
Что такое TypeError: объект ‘int’ не поддается подписке?
Что такое TypeError?
Ошибка TypeError возникает при попытке оперировать значением, которое не поддерживает эту операцию. Давайте разберемся с помощью примера:
Предположим, мы попытаемся объединить строку и целое число с помощью оператора ‘+’. Здесь мы увидим TypeError, поскольку операция + не разрешена между двумя объектами разных типов.
#example of typeError print(S + number)
Выход:
Traceback (most recent call last):
File "", line 1, in
print(S + number)
TypeError: can only concatenate str (not "int") to str
Объяснение:
Здесь мы взяли строку “Литеральные решения” и взяли число. После этого в операторе печати мы попытаемся добавить их. В результате: произошла ошибка типа.
Что такое объект ‘int’, не поддающийся подписке?
Когда мы пытаемся объединить строковые и целочисленные значения, это сообщение говорит нам, что мы рассматриваем целое число как подписываемый объект. Целое число не является подписываемым объектом. Объекты, содержащие другие объекты или типы данных, такие как строки, списки, кортежи и словари, могут быть подписаны. Давайте возьмем пример:
1. Number: typeerror: Объект ‘int’ не поддается подписке
#example of integer which shows a Typeerror print(number[0])
выход:
Traceback (most recent call last):
File "", line 1, in
print(number[0])
TypeError: 'int' object is not subscriptable
Объяснение:
Здесь мы взяли число и попытались напечатать сквозное индексирование, но оно показывает typeerror, так как целые числа не поддаются подписке.
2. List: typeerror: объект ‘int’ не является подписываемым
Эта проблема Typeerror не возникает в списке, так как это подписываемый объект. Мы можем легко выполнять такие операции, как нарезка и индексация.
#list example which will run correctly Names = ["Latracal" , " Solutions", "Python"] print(Names[1])
Выход:
Solutions
Объяснение:
Здесь, во-первых, мы взяли список имен и получили к нему доступ с помощью индексации. Таким образом, он показывает результат в виде решений.
Повседневный Пример Того, Как может Произойти typeerror: ‘int’ объект не является подписываемым
Давайте возьмем простой и повседневный пример вашей даты рождения, записанной в дате, месяце и году. Мы напишем программу, которая возьмет ввод пользователя и распечатает дату, месяц и год отдельно.
#Our program begins from here (input("what is your birth date?")) [0:2] [2:4] [4:8] print(" birth_date:",birth_date) print("birth_month:",birth_month) print("birth_year:",birth_year)
Выход:
what is your birth date?31082000
Traceback (most recent call last):
File "C:/Users/lenovo/Desktop/fsgedg.py", line 3, in
[0:2]
TypeError: 'int' object is not subscriptable
Объяснение:
Здесь, во-первых, мы взяли программу для печати даты рождения отдельно с помощью индексации. Во-вторых, мы взяли целочисленные входные данные даты рождения в виде даты, месяца и года. В-третьих, мы разделили дату, месяц и год с помощью индексации, а после этого печатаем их отдельно, но получаем вывод ad TypeError: объект ‘int’ не поддается подписке. Как мы изучали выше, объект integer не является подписываемым.
Решение TypeError: объект ‘int’ не является подписываемым
Мы сделаем такую же программу печати данных о рождении, принимая входные данные от пользователя. В этой программе мы преобразовали дату рождения в целое число, поэтому мы не могли выполнять такие операции, как индексация и нарезка.
Чтобы решить эту проблему сейчас, мы удалим оператор int() из нашего кода и запустим тот же код.
#remove int() from the input() ("what is your birth date?") [0:2] [2:4] [4:8] print(" birth_date:",birth_date) print("birth_month:",birth_month) print("birth_year:",birth_year)
Выход:
what is your birth date?31082000
birth_date: 31
birth_month: 08
birth_year: 2000
Объяснение:
Здесь мы только что взяли входные данные в строку, просто удалив int(), и теперь мы можем сделать индексацию и href=”https://docs.python.org/2.3/whatsnew/section-slices.html”>нарезать в нем легко, так как он стал списком, который можно подписывать, так что никакой ошибки не возникает. href=”https://docs.python.org/2.3/whatsnew/section-slices.html”>нарезать в нем легко, так как он стал списком, который можно подписывать, так что никакой ошибки не возникает.
Должен Читать
- [Решено] TypeError: Только Массивы Размера 1 Могут Быть Преобразованы В Скаляры Python Error 50+ Часто Задаваемых Вопросов Python Для Интервью Python Max Int | Каково максимальное значение типа данных int в Python Python int to Binary | Integer to Binary Преобразование Недопустимый литерал для int() с базой 10 | Ошибка и разрешение
Вывод: Typeerror: объект ‘int’ не поддается подписке
Мы узнали все ключевые моменты о TypeError: объект ‘int’ не поддается подписке. Существуют такие объекты, как список, кортеж, строки и словари, которые могут быть подписаны. Эта ошибка возникает при попытке выполнить индексацию или нарезку целого числа.
Предположим, нам нужно выполнить такие операции, как индексация и нарезка целых чисел. Во-первых, мы должны преобразовать целое число в строку, список, кортеж или словарь.
Теперь вы можете легко решить этот python TypeError, как smartcode.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Счастливого Пифонирования!