在python3中使用函数len()

时间:2016-08-09 22:33:26

标签: python function python-3.x

当我需要计算给定范围内的正数(例如,范围 - >>>(1,100))时, 我使用函数len(),但它不起作用并给出:

  

TypeError:类型' int'的对象没有len()

有人可以解释此错误,或建议使用正确的函数解决此问题。

3 个答案:

答案 0 :(得分:2)

len(s)

作为参数
  

序列(例如字符串,字节,元组,列表或范围)或集合(例如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)