← Все вопросы

TypeError: object of type 'int' has no len() — почему len() не работает?

Задан 22 месяца назад1к просмотров1 ответ
7

Хочу узнать «длину» числа или проверить количество цифр, пишу len(x), а Python отвечает TypeError: object of type 'int' has no len(). Почему у числа нет длины и как тогда посчитать количество цифр?

1 ответ

10
✓ Принятый ответ — помог автору

Ошибка значит: функция len() применима не ко всем объектам. У чисел (int, float) длины нет — len() работает только с тем, что состоит из элементов: строки, списки, кортежи, словари, множества.

Ошибка:

x = 12345
print(len(x))   # TypeError: object of type 'int' has no len()

Что делать зависит от задачи:

  1. Хотите число цифр — сначала превратите число в строку:
x = 12345
print(len(str(x)))   # 5
  1. Перепутали переменную — думали, что там список/строка, а оказалось число. Проверьте print(type(x)).

  2. Случайно переназначили имя: был список items, потом items = len(items) — теперь это число, и повторный len(items) падает.

Такое же сообщение бывает с 'int' object is not iterable — когда число пытаются перебрать в for. Смысл общий: число — это одно неделимое значение, у него нет ни длины, ни элементов. Если нужны цифры по отдельности — работайте через строку: for d in str(x): ... даст символы-цифры.

Ваш ответ

, чтобы ответить на вопрос.