Что означает ошибка TypeError: 'list' object cannot be interpreted as an integer

Что означает ошибка TypeError: 'list' object cannot be interpreted as an integer

Неочевидная ошибка при организации цикла в Python.

Ситуация: мы пишем на Python программу для ветеринарной клиники, и у нас есть список животных, которых мы лечим:

animals = ['собака', 'кошка', 'попугай', 'хомяк', 'морская свинка']

Нам нужно вывести список всех этих животных на экран, поэтому будем использовать цикл. Мы помним, что для организации циклов в питоне используется команда range(), которая берёт диапазон и перебирает его по одному элементу, поэтому пишем простой цикл:

# объявляем список животных, которых мы лечим в ветклинике
animals = ['собака', 'кошка', 'попугай', 'хомяк', 'морская свинка']

# перебираем все элементы списка
for i in range(animals):
    # и выводим их по одному на экран
    print(animals[i])

Но при запуске программа останавливается и выводит ошибку:

❌ TypeError: 'list' object cannot be interpreted as an integer

Странно, мы же всё сделали по правилам, почему так?

Что это значит: команда range() работает с диапазонами, которые явно представлены в числовом виде, например range(5). А у нас вместо этого стоит список со строковыми значениями. Python не знает, как это обработать в виде чисел, поэтому выдаёт ошибку.

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

Как исправить ошибку TypeError: 'list' object cannot be interpreted as an integer

Если вы хотите организовать цикл, в котором нужно перебрать все элементы списка или строки, используйте дополнительно команду len(). Она посчитает количество элементов в вашей переменной и вернёт числовое значение, которое и будет использоваться в цикле:

# объявляем список животных, которых мы лечим в ветклинике
animals = ['собака', 'кошка', 'попугай', 'хомяк', 'морская свинка']

# получаем длину списка и перебираем все его элементы
for i in range(len(animals)):
    # и выводим их по одному на экран
    print(animals[i])

Практика

Попробуйте выяснить самостоятельно, есть ли здесь фрагмент кода, который работает без ошибок:

lst = [3,5,7,9,2,4,6,8]

for i in range(lst):
    print(lst[i])
lst = (3,5,7,9,2,4,6,8)

for i in range(lst):
    print(lst[i])
lst = (3)

for i in range(lst):
    print(lst[i])

Текст:

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

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

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

Вёрстка:

Никита Кучеров

Соцсети:

Олег Вешкурцев

Веб-разработка — это новый черный
А мы знаем толк в моде и поможем освоить новую специальность за полгода.
Посмотреть
Фронтенд — это новый черный
Еще по теме
prev
next
Uncaught SyntaxError: Unexpected end of input — что это значит?
Uncaught SyntaxError: Unexpected end of input — что это значит?

Скорее всего, вы забыли закрыть скобки при объявлении функции.

Uncaught SyntaxError: Unexpected identifier — что это означает?
Uncaught SyntaxError: Unexpected identifier — что это означает?

Вредная ошибка, которую легко исправить.

Uncaught SyntaxError: Unexpected token
Uncaught SyntaxError: Unexpected token — что это означает?

Самая популярная ошибка у новичков.

Uncaught SyntaxError: Unexpected token
Uncaught SyntaxError: Unexpected token — что это означает?

Самая популярная ошибка у новичков.

$ is not defined в jQuery: что это значит и что делать
Uncaught TypeError: Cannot read property — что это означает
Uncaught TypeError: Cannot read property — что это означает

Нельзя прочитать то, чего нет.

Я сделяль: главная страница Яндекса
Я сделяль: главная страница Яндекса

Верстаем чистую страницу поисковика.

Делаем свой блокировщик любой рекламы за 3 минуты
Делаем свой блокировщик любой рекламы за 3 минуты

Хакерский метод победить рекламодателей.

Как сохранить JSON на сервере
Как сохранить JSON на сервере

И отдать его обратно по запросу.

Купить или сделать самому?
Купить или сделать самому?

Ответ не всегда очевиден.

Делаем страницу «О себе» на Бутстрапе

Если ты можешь сделать страницу о себе, ты можешь сделать всё.

Ваш собственный орфокорректор с автозаменой

Проект недели.

Что означает ошибка Exception has occurred: TypeError
Что означает ошибка Exception has occurred: TypeError

Неочевидная ошибка в типах данных Python.

easy