目录
TypeError: object of type ‘int’ has no len() in Python
- TypeError:’int’ 类型的对象在 Python 中没有 len()
- TypeError:’float’ 类型的对象在 Python 中没有 len()
- TypeError:’bool’ 类型的对象在 Python 中没有 len()
类型错误:’int’ 类型的对象在 Python 中没有 len()
当我们将整数传递给函数时,会出现 Python “TypeError: object of type ‘int’ has no len()” len()
。
要解决错误,请将整数转换为字符串或更正分配并将序列( 、 等)传递list
给str
函数len()
。
下面是错误如何发生的示例。
my_int = 100 # ⛔️ TypeError: object of type 'int' has no len() print(len(my_int))
我们将一个整数传递给len()
导致错误的函数。
获取整数的长度
如果需要获取整数的长度,先将其转换为字符串。
my_int = 100 print(len(str(my_int))) # 👉️ 3
len ()函数返回对象的长度(项目数)。
my_list = ['apple', 'banana', 'kiwi'] result = len(my_list) print(result) # 👉️ 3
len()
请注意,不能使用整数调用该函数。
如果您不希望变量存储整数值,则必须更正赋值。
使用range()
类迭代特定次数
如果您尝试迭代特定次数,请使用该类range()
。
my_int = 5 for n in range(my_int): print(n) result = list(range(my_int)) # 👇️ [0, 1, 2, 3, 4] print(result)
range类通常用于在for 循环中循环特定次数,并采用以下参数:
姓名 | 描述 |
---|---|
start |
表示范围开始的整数(默认为0 ) |
stop |
向上,但不包括提供的整数 |
step |
范围将由每 N 个数字组成,从start 到stop (默认为1 ) |
追踪变量被分配整数的位置
如果错误地为变量分配了一个整数,您必须追踪分配的位置并更正它。
my_str = 'bobbyhadz.com' my_str = 100 # 👇️ TypeError: object of type 'int' has no len() print(len(my_str))
最初,我们将变量设置为一个字符串,但后来它被设置为一个数字,这导致了错误。
该函数len()
采用的参数可以是序列(字符串、元组、列表、范围或字节)或集合(字典、集合或冻结集合)。
当我们将一个对象传递给
len()函数时,该对象的
_ _ len _ _ ()
方法就会被调用。
您可以使用该dir()
函数打印对象的属性并查找__len__
属性。
my_int = 5 print(dir(my_int))
或者您可以使用
try/except 语句进行检查。
my_int = 5 try: print(my_int.__len__) except AttributeError: # 👇️ this runs print('object has no attribute __len__')
__len__
我们尝试在块中访问对象的属性try
,如果
AttributeError
引发 an ,我们知道该对象没有属性__len__
并且无法传递给函数len()
。
如果不确定变量存储的类型,请使用内置type()
类。
my_int = 5 print(type(my_int)) # 👉️ <class 'int'> print(isinstance(my_int, int)) # 👉️ True
类型
类
返回对象的类型。
如果传入的对象是传入类的实例或子类,则isinstance函数返回
。True
目录
类型错误:’float’ 类型的对象在 Python 中没有 len()
当我们将 float 传递给函数时,会出现 Python“TypeError: object of type ‘float’ has no len()” len()
。
要解决该错误,请找出变量在何处分配了浮点数并更正分配或将浮点数转换为字符串。
下面是错误如何发生的示例。
my_float = 3.14 # ⛔️ TypeError: object of type 'float' has no len() print(len(my_float))
我们将一个浮点数传递给len()
导致错误的函数。
获取浮点数的长度
如果需要获取 float 的长度,请先将其转换为字符串。
my_float = 3.14 print(len(str(my_float))) # 👉️ 4
如果您需要从结果中排除句点,请减去 1。
my_float = 3.14 result = len(str(my_float)) - 1 print(result) # 👉️ 3
len ()函数返回对象的长度(项目数)。
my_list = ['bobby', 'hadz', 'com'] result = len(my_list) print(result) # 👉️ 3
请注意,len()
不能使用浮点数调用该函数。
如果您不希望变量存储浮点数,则必须更正赋值。
迭代特定次数
如果您尝试迭代特定次数,请使用该类range()
。
my_float = 3.14 for n in range(int(my_float)): print(n) result = list(range(int(my_float))) # 👇️ [0, 1, 2] print(result)
range类通常用于在for 循环中循环特定次数,并采用以下参数:
姓名 | 描述 |
---|---|
start |
表示范围开始的整数(默认为0 ) |
stop |
向上,但不包括提供的整数 |
step |
范围将由每 N 个数字组成,从start 到stop (默认为1 ) |
请注意,当我们将对象传递给
len()函数时,
将调用对象的
_ _ len _ _ ()方法。
追踪变量被分配浮点数的位置
如果该变量不应该存储浮点数,则您必须追踪它在何处被分配了一个浮点数。
my_str = 'bobbyhadz.com' my_str = 3.14 # ⛔️ TypeError: object of type 'float' has no len() print(len(my_str))
该变量被初始化为一个字符串,但稍后它被设置为一个浮点数。
将浮点数传递给len()
函数会导致错误。
您必须在代码中找到为变量分配浮点数的位置并更正分配。
您可以使用该dir()
函数打印对象的属性并查找__len__
属性。
my_float = 3.14 print(dir(my_float))
或者您可以使用try/except
语句进行检查。
my_float = 3.14 try: print(my_float.__len__) except AttributeError: # 👇️ this runs print('object has no attribute __len__')
__len__
我们尝试在块中访问对象的属性try
,如果
AttributeError
引发 an ,我们知道该对象没有属性__len__
并且无法传递给函数len()
。
如果不确定变量存储的类型,请使用内置type()
类。
my_float = 3.14 print(type(my_float)) # 👉️ <class 'float'> print(isinstance(my_float, float)) # 👉️ True
类型
类
返回对象的类型。
如果传入的对象是传入类的实例或子类,则isinstance函数返回
。True
类型错误:’bool’ 类型的对象在 Python 中没有 len()
True
当我们将布尔值(或False
)传递给函数时,会出现 Python“TypeError: object of type ‘bool’ has no len()” len()
。
要解决该错误,请确保您没有在函数调用中计算表达式len()
。
下面是错误如何发生的示例。
my_bool = True # ⛔️ TypeError: object of type 'bool' has no len() print(len(my_bool))
我们向导致错误的函数传递了一个布尔值(True
或False
) 。len()
计算一个表达式返回一个布尔结果
确保您没有在函数调用中评估表达式len()
。
my_bool = True # ⛔️ TypeError: object of type 'bool' has no len() if len('hi' == 'hi'): print('success')
表达式的'hi' == 'hi'
计算结果为True
,因此我们最终将布尔值传递给函数len
。
相反,您可以len()
使用每个值调用该函数。
my_bool = True if len('hi') == len('hi'): # 👇️ this runs print('success')
len ()函数返回对象的长度(项目数)。
my_list = ['bobby', 'hadz', 'com'] result = len(my_list) print(result) # 👉️ 3
len()
请注意,不能使用布尔值调用该函数。
追踪变量被分配布尔值的位置
我们最初将变量设置为列表,但后来将其重新分配为布尔值。
my_list = ['bobby', 'hadz', 'com'] my_list = True # ⛔️ TypeError: object of type 'bool' has no len() print(len(my_list))
将布尔值传递给len()
函数会导致错误。
您必须追踪变量设置为布尔值的位置并更正分配。
如果您不希望变量存储布尔值,则必须更正赋值。
该函数len()
采用的参数可以是序列(字符串、元组、列表、范围或字节)或集合(字典、集合或冻结集合)。
如果不确定变量存储的类型,请使用内置type()
类。
my_bool = False print(type(my_bool)) # 👉️ <class 'bool'> print(isinstance(my_bool, bool)) # 👉️ True
类型
类
返回对象的类型。
如果传入的对象是传入类的实例或子类,则isinstance函数返回
。True
当我们将一个对象传递给
len()函数时,该对象的
_ _ len _ _ ()
方法就会被调用。
您可以使用该dir()
函数打印对象的属性并查找__len__
属性。
my_bool = True print(dir(my_bool))
或者您可以使用try/except
语句进行检查。
my_bool = True try: print(my_bool.__len__) except AttributeError: # 👇️ this runs print('object has no attribute __len__')
__len__
我们尝试在块中访问对象的属性try
,如果
AttributeError
引发 an ,我们知道该对象没有属性__len__
并且无法传递给函数len()
。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: