这是错误:对于范围内的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
答案 0 :(得分:5)
错误正是它所说的。 rotlati
是float
。您无法获取len()
的{{1}}。查看您的代码,看起来好像您可能意味着来创建名为float
和rotlati
的列表,并在每次迭代时附加到它们你的rotlongi
循环。相反,您目前只是在每次迭代时覆盖相同的两个浮点变量。
答案 1 :(得分:1)
len参数可以是序列(字符串,元组或列表)或映射(字典)。 https://docs.python.org/2/library/functions.html#len
在调用len函数之前,您应该验证参数是否属于此类型之一。您可以调用方法isinstance()来验证它。看看如何使用它。 https://docs.python.org/2/library/functions.html#isinstance
答案 2 :(得分:0)
我得到了正确答案,试试这个:
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)
答案 3 :(得分:0)
另一种情况是我在保存文件时遇到了同样的错误。
odf.to_excel(writer,sheet_name = str(x),startcol = 5,index = False)
您还可以检查工作表的名称是int还是float。将其转换为字符串。