2014-11-12 22 views
0

Я продолжаю получать эту ошибку при запуске этого файла python. Это происходит на этой линии:Объект Float, который не является итерируемым при назначении

p1x, p1y = newList[0]
TypeError: 'Float' object is not iterable

Вот код:

newList = [] 
for i, val in enumerate(poly):  
    if poly[i] != True: 
     newList.append(poly[i][0]) 
n = len(newList) 
inside =False 
p1x, p1y = newList[0] 
for i in range(n+1): 
    p2x, p2y = newList[i % n] 
    if y > min(p1y,p2y): 
     if y <= max(p1y,p2y): 
      if x <= max(p1x,p2x): 
       if p1y != p2y: 
        xinters = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x 
       if p1x == p2x or x <= xinters: 
        return True 
    p1x,p1y = p2x,p2y 

return inside 

Почему, когда я делаю это

p1x = newList[0] 
p1y = newList[0] 

это работает, но не наоборот?

ответ

0

Что такое NewList [0]?
Если это одно значение поплавка, это даст вам ошибку.

newList [0] должен быть кортежем, например (1, 2), чтобы перебирать его.

Вы могли бы сделать (если NewList [0] и NewList [1] единичные значения.):

p1x, p1y = newList[0], newList[1] 

или

newList[0] = (1,2) 
p1x, p1y = newList[0] 
0

Потому что newList[0] - это Float, поэтому его нельзя разбить на две части (по мере того как ваши исходные попытки кода). Ваша вторая попытка назначает Float каждому из p1x и p1y, что, вероятно, не является тем, что вы хотите сделать; но если это , то можете написать p1x,p1y = newList[0], newList[0].

Смежные вопросы