我的类型TypeError会发生什么? (蟒蛇)

时间:2015-04-16 15:45:34

标签: python

我有一个从SQLite数据库中检索数据的方法。数据保存为文本(出于某种原因),但实际上它是浮点数(14.5等)。这是我获取它们的方法:

def retrieveSpeeds(databasepath, someid):
     con = lite.connect(databasepath)
     with con:
        cur = con.execute("SELECT speed FROM speeds WHERE id = someid")
        speeds = [x[0] for x in cur]
        return speeds

返回以下内容:

[u'14.00', u'14.50', u'14.50', u'14.50', u'14.50', u'13.80']

但是,因为我想要简单的数字:

for i in range(0, len(speed)):
     newspeeds.append(float(speed[i]))

所以现在新的回报看起来像:

[14.0, 14.5, 14.5, 14.5, 14.5, 13.8]

所以我主要做的是:

maxspeeds = []
for id in userid:
    speed = retrieveSpeeds(databasepath, id)
    if len(speed>0):
           maxspeeds.append(max(speed))
for i in range(0,len(maxspeeds)):
    if maxspeeds[i] > 40:
          maxspeeds = maxspeeds.pop(i)

这给了我以下TypeError:

    Traceback (most recent call last):
    if len(speed>0):
    TypeError: object of type 'bool' has no len()

布尔?我非常困惑为什么我的返回列表现在是一个布尔。

2 个答案:

答案 0 :(得分:4)

错误消息显示您写了if len(speed>0):(请注意>0内的len),而不是len(speed)>0,因为您应该写它(就像您所做的那样)在你的代码片段中。)

答案 1 :(得分:1)

看,你有一个错字,正确的方法是做if len(speed)>0:。你自己纠正过了。

len(5>2)5>2返回TrueTrue没有len()

时无法正常工作