TypeError: object of type 'int' has no len() — почему len() не работает?
Хочу узнать «длину» числа или проверить количество цифр, пишу len(x), а Python отвечает TypeError: object of type 'int' has no len(). Почему у числа нет длины и как тогда посчитать количество цифр?
1 ответ
Ошибка значит: функция len() применима не ко всем объектам. У чисел (int, float) длины нет — len() работает только с тем, что состоит из элементов: строки, списки, кортежи, словари, множества.
Ошибка:
x = 12345
print(len(x)) # TypeError: object of type 'int' has no len()
Что делать зависит от задачи:
- Хотите число цифр — сначала превратите число в строку:
x = 12345
print(len(str(x))) # 5
-
Перепутали переменную — думали, что там список/строка, а оказалось число. Проверьте
print(type(x)). -
Случайно переназначили имя: был список
items, потомitems = len(items)— теперь это число, и повторныйlen(items)падает.
Такое же сообщение бывает с 'int' object is not iterable — когда число пытаются перебрать в for. Смысл общий: число — это одно неделимое значение, у него нет ни длины, ни элементов. Если нужны цифры по отдельности — работайте через строку: for d in str(x): ... даст символы-цифры.