私は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のようにポイントの最初のパラメータが必要であることを言うしようとしている、とポイントの2番目のパラメータが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
から取得して、メソッドがテスト時に機能するようにします。あなたの提案があれば教えてください。ありがとうございました。
は良いアイデアではありません。エラーを起こさせてみませんか? – Blender
あなたのメソッドで 'self.x'と' self.y'を0に設定しているのはなぜですか?それは意味をなさない。それがどういう意味か考えてみてください。 –
@Blenderこれは明らかに割り当てです。 getterとsetterを使うことは良い考えではありません。 –