任务是有一个带有三个参数(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.
我尝试了多种解决方案,但总会遇到某种错误。
答案 0 :(得分:3)
def is_rightangled(a, b, c):
return (b**2 + a**2 == c**2)