Точки в прямоугольнике Все - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь получить весь список точек, чтобы заполнить логическое значение true, если список точек попадает в прямоугольник.

Я пытался запустить приведенный ниже код в Jupyterlab. но я продолжаю получать следующую ошибку:

TypeError: '> =' не поддерживается между экземплярами 'tuple' и 'int'

def allIn(firstCorner=(0,0), secondCorner=(0,0), pointList=[]):
   fc1,sc1=firstCorner[0],firstCorner[1]
   fc2,sc2=secondCorner[0],secondCorner[1]

   fc,sc=pointList[0],pointList[1]
   if (fc >= fc1 and fc <= fc2 and sc >= sc1 and sc <= sc2) :
       return True
   elif(fc >= fc2 and fc <= fc1 and sc >= sc2 and sc <= sc1):
       return True
   else:
       return False

print(allIn((0,0), (5,5), [(1,1), (0,0), (5,5)]))

Я ожидаю, что на выходе будет allIn((0,0), (5,5), [(1,1), (0,0), (5,5)]) должно вернуться True, но allIn((0,0), (5,5), [(1,1), (0,0), (5,6)]) должно вернуть False и пустой список точек allIn((0,0), (5,5), []) должен вернуть False

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Посмотрите на отдельные точки в вашем списке точек.

def allIn(firstCorner=(0,0), secondCorner=(0,0), pointList=[]):
   fc1,sc1=firstCorner[0],firstCorner[1]
   fc2,sc2=secondCorner[0],secondCorner[1]
   inside = False
   for point in pointList:
       fc,sc=point[0],point[1]
       if (fc >= fc1 and fc <= fc2 and sc >= sc1 and sc <= sc2) :
           inside = True
       elif(fc >= fc2 and fc <= fc1 and sc >= sc2 and sc <= sc1):
           inside = True
       else:
           return False
   return inside
0 голосов
/ 29 мая 2019

Ваш pointsList представляет собой список кортежей.Вы установили

fc,sc=pointList[0],pointList[1]

Так что fc и sc - это кортежи.Когда вы делаете

if (fc >= fc1 and fc <= fc2 and sc >= sc1 and sc <= sc2) :

Вы сравниваете fc (кортеж) с fc1 (int), который вызывает ошибку TypeError.Для правильного сравнения посмотрите на pointList [0] [0], pointList [0] [1], pointList [1] [0] и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...