当我需要计算给定范围内的正数(例如,范围 - >>>(1,100))时,
我使用函数len()
,但它不起作用并给出:
TypeError:类型' int'的对象没有len()
有人可以解释此错误,或建议使用正确的函数解决此问题。
答案 0 :(得分:2)
序列(例如字符串,字节,元组,列表或范围)或集合(例如dicttionary,set或freeze set)。
也就是说,len(s)
只能在其中一个数据结构上调用 - 而且才有意义。
传递int
会因发布的错误而失败 - 这根本没有意义,int
没有长度。
TypeError:'int'类型的对象没有len()
因此,len(range(1,100))
或len([1,2,3])
之类的内容有效,但len(1)
却没有。
在您的示例中,在评论中:
for s in range(10):
if s>0:
print(len(s))
s
是一个int,是每个循环中range(10)
的另一个int,它解释了len(s)
失败的原因。
P.S。从代码中发布直接代码段可以帮助回答者更好地了解您遇到的问题。
更新:从您的评论和代码中可以看出,您正试图存储list
个输入。
input_list = []
for s in range(0,6):
d=float(input())
if d>0:
input_list.append(d)
print("")
print (len(input_list))
当您执行作业d=float(input())
时,每个循环d
将是不同的值,float
,因此len(d)
失败。您想要的是将所有输入存储在列表input_list
中,然后打印len
。您可以append()
将值存储在列表中 - input_list.append(d)
答案 1 :(得分:0)
您可能会在单个整数而不是len
的输出上调用range
。相反,请使用它:
>>> len(range(1, 100))
答案 2 :(得分:0)
解决此问题的简便方法是过滤范围,然后计算结果:
num_positives = len([i for i in range(1, 10) if i > 0])
print(num_positives)