给出两点找到slope-Python类

问题描述 投票:-1回答:1

我是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))

我应该更改什么才能使此代码有效?谢谢

python geometry
1个回答
1
投票

你的计算有点混乱:

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())
© www.soinside.com 2019 - 2024. All rights reserved.