2013-11-27 3 views
0

Вот ошибка: для J в диапазоне (LEN (rotlati)):TypeError: объект 'поплавком' типа не имеет LEN()

TypeError: объект типа 'флоат' не имеет 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 
+3

Ну, 'rotlati' является' float' и не поддерживает 'LEN()'. Что ты не понимаешь? –

ответ

3

ошибка именно то, что говорит он. rotlati - float. Вы не можете взять len()float. Посмотрев на свой код, похоже, что у вас может быть означает, чтобы создать списки под названием rotlati и rotlongi и добавьте к ним на каждой итерации вашего цикла range(len(lati)). Вместо этого вы в настоящее время просто перезаписываете те же две переменные с плавающей запятой на каждой итерации.

0

Аргумент len может быть последовательностью (строка, кортеж или список) или отображение (словарь). https://docs.python.org/2/library/functions.html#len

Перед вызовом функции len вы должны проверить, является ли аргумент одним из этого типа. Вы можете вызвать метод isinstance(), чтобы проверить его. Посмотрите, как его использовать. https://docs.python.org/2/library/functions.html#isinstance

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) 
Смежные вопросы