Что означает ошибка 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.

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

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

Чтобы узнать, что объект итерируемый, нужно выяснить, имеет ли объект метод __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))

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

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

Обложка:

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

Корректор:

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

Вёрстка:

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

Соцсети:

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

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Вам может быть интересно
easy
[anycomment]
Exit mobile version