【问题标题】:TypeError: object of type 'float' has no len()TypeError:“float”类型的对象没有 len()
【发布时间】:2019-11-28 15:27:37
【问题描述】:

这是错误:对于范围内的 j (len(rotlati)):

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

我看过很多其他帖子,但我还没有找到解决方案。 我有点困惑。如果您知道这里发生了什么,请发表评论。

代码是:

m = 22
rlati = numpy.zeros(m)
n = 22
rlongi = numpy.zeros(n)

v = numpy.ndarray((2,),float)

for j in range (len(lati)):
LA = lati[j]
    rlati[j] = LA - latiref

    for i in range (len(longi)):
        LO = longi[i]

    rlongi[i] = LO - longiref

    v[0] = rlati[j]
    v[1] = rlongi[i]

    vv = numpy.matrix(v)
    #transpose of vv as vv.T
    vv = vv.T

    #proper rotation
    vn = R*vv

    #define how many decimals
    vn = numpy.around(vn, decimals =2)

    # rotation of the second column (lati) and third line (longi)
        rotlati = float(vn[0])
    rotlongi = float(vn[1])

s = 22
latidef = numpy.zeros(s)
p = 22
longidef = numpy.zeros(p)

for j in range (len(rotlati)):
RLA = rotlati[j]

    latidef[j] = RLA + latiref

for i in range (len(rotlongi)):
        RLO = rotlongi[i]

    longidef[i]= RLO + longiref

    RLADEF = latidef[j]
    RLODEF = longidef[i]

    return RLADEF, RLODEF

【问题讨论】:

  • 好吧,rotlatifloat,不支持 len()。你不明白什么?

标签: python


【解决方案1】:

错误正是它所说的。 rotlatifloat。您不能使用floatlen()。查看您的代码,您似乎打算创建名为rotlatirotlongi列表,并在range(len(lati)) 的每次迭代中附加到它们环形。相反,您目前只是在每次迭代时覆盖相同的两个浮点变量。

【讨论】:

    【解决方案2】:

    len 参数可以是序列(字符串、元组或列表)或映射(字典)。 https://docs.python.org/2/library/functions.html#len

    在调用 len 函数之前,您应该验证参数是否属于这种类型。您可以调用方法 isinstance() 来验证它。看看如何使用它。 https://docs.python.org/2/library/functions.html#isinstance

    【讨论】:

      【解决方案3】:

      另一种情况,我在保存文件时遇到了同样的错误。

      odf.to_excel(writer,sheet_name=str(x),startcol=5,index=False)

      您还可以检查工作表的名称是 int 还是 float。将其转换为字符串。

      【讨论】:

        【解决方案4】:

        我得到了正确答案,试试这个:

        lloyd = {
            "name": "Lloyd",
            "homework": [90.0, 97.0, 75.0, 92.0],
            "quizzes": [88.0, 40.0, 94.0],
            "tests": [75.0, 90.0]
        }
        
        alice = {
        
            "name": "Alice",
            "homework": [100.0, 92.0, 98.0, 100.0],
            "quizzes": [82.0, 83.0, 91.0],
            "tests": [89.0, 97.0]
        }
        tyler = {
        
            "name": "Tyler",
            "homework": [0.0, 87.0, 75.0, 22.0],
            "quizzes": [0.0, 75.0, 78.0],
            "tests": [100.0, 100.0]
        }
        
        numbers = []
        
        def average(numbers):
        
            total = float(sum(numbers))
            return total / len(numbers)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-15
          • 2021-01-23
          • 1970-01-01
          • 1970-01-01
          • 2015-08-21
          • 2019-10-28
          相关资源
          最近更新 更多