タスクは、3つのパラメータ(a、b、c)を持つ関数があることです。 Cは常に最長です。 関数は、角度Cが直角であるかどうかを判断する必要があります。これは私のコードです:直角三角形の決定
import math
def is_rightangled(a, b, c):
"""
>>> is_rightangled(3, 4, 5)
True
>>> is_rightangled(5, 12, 13)
True
>>> is_rightangled(8, 6, 10)
True
>>> is_rightangled(3, 4, 6)
False
>>> is_rightangled(1, 4, 6)
False
"""
A = math.acos((b**2 + c**2 - a**2)/(2 * b * c))*180/math.pi
B = math.acos((c**2 + a**2 - b**2)/(2 * c * a))*180/math.pi
angle = 180 - A - B
if angle == 90:
return True
else: return False
これはdoctestではを使用しているとき、私が得るものです:
> ********************************************************************** File "/home/niel/Desktop/Session2/is_rightangled.py", line 13, in
> is_rightangled.is_rightangled Failed example:
> is_rightangled(1, 4, 6) Exception raised:
> Traceback (most recent call last):
> File "/usr/lib/python3.4/doctest.py", line 1324, in __run
> compileflags, 1), test.globs)
> File "<doctest is_rightangled.is_rightangled[4]>", line 1, in <module>
> is_rightangled(1, 4, 6)
> File "/home/niel/Desktop/Session2/is_rightangled.py", line 17, in is_rightangled
> A = math.acos((b**2 + c**2 - a**2)/(2 * b * c))*180/math.pi
> ValueError: math domain error
> ********************************************************************** 1 items had failures: 1 of 5 in is_rightangled.is_rightangled
> ***Test Failed*** 1 failures.
私は複数のソリューションを試してみましたが、常にエラーのいくつかの種類を取得します。
なぜピタゴラスの式は直接ではないのですか? 'a ** 2 + b ** 2 == c ** 2'? – jrd1
'acos()'の引数は '-1'と' 1'の間でなければなりません。 – Barmar
これらの角度を実際に計算する必要はありません。ピタゴラスの定理を逆に使うことができます。 – user2357112