Что означает ошибка TypeError: int object is not iterable
easy

Что означает ошибка TypeError: int object is not iterable

Это когда мы используем цикл for с числом

Ситуация: у нас есть какая-то переменная с числами, и мы хотим перебрать количество символов в ней с помощью цикла.

numbers = [4, 8, 15, 16, 23, 42]
for number in len(numbers):
    print(number)

Кажется, что всё правильно, но при запуске появляется ошибка:

❌ TypeError: int object is not iterable

Что это значит: мы пытаемся запустить цикл для типа данных, с которым циклы не могут работать.

Когда встречается: когда мы пытаемся выполнить операцию с переменной, которая представляет собой целое число.

Что делать с ошибкой TypeError: int object is not iterable

Ошибка TypeError возникает, когда функция применяется к объекту неправильного типа данных. Например, если мы пытаемся применить математическую функцию к строке или вызвать значение, которое не является функцией, как функцию.

В нашем случае мы пытаемся перебрать элементы переменной, которая не является перебираемой. В Python перебираемые, или итерируемые, данные — это объекты, которые содержат несколько объектов, например списки, кортежи, наборы, словари и так далее. А наша переменная — целочисленная.

Целое число — это одно значение, и пытаться перебрать его в цикле не будет правильно.

Чтобы исправить ошибку, используем функцию range в первой строке цикла for.

numbers = [4, 8, 15, 16, 23, 42]
for number in range(len(numbers)):
    print(number)

В Python функция range проверяет переданную в неё переменную и возвращает последовательность чисел внутри диапазона, начиная с 0.

Теперь всё работает:

Что делать с ошибкой TypeError: int object is not iterable

Как проверить, является ли объект итерируемым

Чтобы узнать, что объект итерируемый, нужно выяснить, имеет ли объект метод __iter__(). Проверить это можно двумя способами.

Первый способ — использовать функцию hasattr().

numbers = [3, 8, 15, 16, 23, 42]
if hasattr(numbers, '__iter__'):
    print("Этот объект итерируемый")
else:
    print("Этот объект не итерируемый")

Запустим этот код:

Как проверить, является ли объект итерируемым

Второй способ — использовать функцию dir().

numbers = [3, 8, 15, 16, 23, 42]
print(dir(numbers))

Получаем результат:

Что означает ошибка TypeError: int object is not iterable

Среди перечисленных методов есть __iter__ (в центре третьей строки результата).

Текст:

Инна Долога

Редактор:

Михаил Полянин

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Юлия Зубарева

Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.
Попробовать бесплатно
Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём!
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy