После того, как вы исправите вызов функции, у вас возникнут проблемы с плавающей запятой.
try,
def is_same_point(p1, p2, e):
for c1, c2 in zip(c1, c2):
if abs(c1 - c2) > e:
return False
return True
Я действительно удивлен, что это работает для вас спример кода вы разместили.Вы, должно быть, построили это, чтобы сделать это.Как правило, вы не можете напрямую сравнивать значения с плавающей запятой на равенство.
Более питонический способ написания вышеуказанной функции -
def is_same_point(point1, point2, e):
return not any(abs(c1 - c2) > e for c1, c2 in zip(point1, point2))
, вам все равно нужно передать e
(для epsilon), хотя и это быстро устареет.
def make_point_tester(e):
def is_same_point(point1, point2):
return not any(abs(c1 - c2) > e for c1, c2 in zip(point1, point2))
return is_same_point
is_same_point = make_point_tester(.001)
Вы уже столкнулись с функциями, являющимися объектами первого класса, поэтому у вас не должно быть никаких проблем с этим кодом;)