Я пытаюсь изучить объектно-ориентированное программирование на Python. Для этого мне нужно создать метод, который вычисляет наклон линии, соединяющей начало координат с точкой. (Я думаю), мы предполагаем, что начало координат (0,0). Например:Метод, который вычисляет наклон в Python
Point(4, 10).slopeFromOrigin()
2.5
Point(12, -3).slopeFromOrigin()
-0.25
Point(-6, 0).slopeFromOrigin()
0
И мы используем уравнение slope = (Y2 - Y1)/(X2 - X1)
вычислить наклон. Кроме того, поскольку деление на 0 не разрешено, нам нужно вернуть None
, когда метод завершится с ошибкой. Вот что я пробовал:
class Point:
#Point class for representing and manipulating x,y coordinates
def __init__(self, initX, initY):
#Create a new point at the given coordinates
self.x = initX
self.y = initY
def getX(self):
return self.x
def getY(self):
return self.y
def distanceFromOrigin(self):
return ((self.x ** 2) + (self.y ** 2)) ** 0.5
#define a method called slopeFromOrigin here
def slopeFromOrigin(self):
#set origin values for x and y (0,0)
self.x = 0
self.y = 0
#slope = (Y2 - Y1)/(X2 - X1)
if (Point(x) - self.x) == 0:
return None
else:
return (Point(y) - self.y)/(Point(x) - self.x)
#some tests to check our code
from test import testEqual
testEqual(Point(4, 10).slopeFromOrigin(), 2.5)
testEqual(Point(5, 10).slopeFromOrigin(), 2)
testEqual(Point(0, 10).slopeFromOrigin(), None)
testEqual(Point(20, 10).slopeFromOrigin(), 0.5)
testEqual(Point(20, 20).slopeFromOrigin(), 1)
testEqual(Point(4, -10).slopeFromOrigin(), -2.5)
testEqual(Point(-4, -10).slopeFromOrigin(), 2.5)
testEqual(Point(-6, 0).slopeFromOrigin(), 0)
Как вы можете видеть, что я пытаюсь сказать, что нам нужен первый параметр точки быть x2, а второй параметр Поинт быть y2. Я пробовал это таким образом и получил
NameError: name 'y' is not defined on line 32
.
Я также попытался получить индексные значения точки, как это:
return (Point[0] - self.y/(Point[1] - self.x)
Но это также дало мне сообщение об ошибке:
TypeError: 'Point' does not support indexing on line 32
я не уверен, как чтобы получить значения параметров x и y от Point
, чтобы метод работал, когда он был протестирован. Пожалуйста, поделитесь своими предложениями, если у вас есть. Спасибо.
Возвращение 'None', когда вызов не является не очень хорошей идеей. Почему бы не позволить ошибке просто произойти? – Blender
Почему вы устанавливаете 'self.x' и' self.y' равным 0 в вашем методе? Это не имеет никакого смысла. Подумайте, что это значит. –
@Blender это явно задание. Использование getters и seters тоже не очень хорошая идея. –