1

How to Think Like a Computer Scientistの第 5 章の演習に取り組んでおり、3 番目の演習を解決しようとしています。

slope(x1, y1, x2, y2)点 (x1, y1) と (x2, y2) を通る直線の傾きを返す関数を作成します。slopeの実装が次の doctest に合格できることを確認してください。

def slope(x1, y1, x2, y2):
    """
      >>> slope(5, 3, 4, 2)
      1.0
      >>> slope(1, 2, 3, 2)
      0.0
      >>> slope(1, 2, 3, 3)
      0.5
      >>> slope(2, 4, 1, 2)
      2.0
    """

これは私が思いついたコードです:

def slope(x1, y1, x2, y2):
    """
        >>> slope(5, 3, 4, 2)
        1.0
        >>> slope(1, 2, 3, 2)
        0.0
    """
    sy = float(y1 - y2)
    sx = float(x1 - x2)
    return sy / sx

2 番目の doctest-0.0では、代わりに0.0… を取得しています。これは混乱を招く-0.0ものです。絶対値を取得するために使用できることはわかってabs()いますが、負の数になるはずのパラメーターがある場合、それは機能しません。

また、結果に条件を設定して絶対値を使用するかどうかを設定できることも知っていますが、ここで何か間違ったことをしているだけなのだろうかと思っています。

4

1 に答える 1