我是python的新手,我想弄清楚为什么这段代码不起作用。
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def slope_from_origin (self,p1,p2):
slope=((p2.y-p1.y)/(p2.x-p1.x))
return Point(slope)
def __str__ (self):
return str(slope)
p=Point(6,7)
q=Point(3,4)
print(p.slope_from_origin(q))
我应该更改什么才能使此代码有效?谢谢
你的计算有点混乱:
slope_from_origin
是通过原点Point(0, 0)
的线段的斜率,并且给定的点。
slope_between_two_points
是通过两个给定点的线段产生的斜率。
slope
是一个标量,你试图用它构造一个Point
,然后将它返回
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def slope_between_two_points(self, p1=Point(0, 0)): # uses default argument to define the origin
if p1.x - self.x == 0:
return float('inf') # prevent dividing by zero when slope is infinite
return (p1.y - self.y) / (p1.x - self.x)
def slope_from_origin(self):
return self.slope_between_two_points()
def __str__ (self):
return str(slope)
p = Point(6, 7)
q = Point(3, 4)
print(p.slope_between_two_points(q), p.slope_from_origin(), q.slope_from_origin())