编写程序,输入三角形三条边判断能否构成直角 三角形,若能构成则计算三角形的面积和周长, 否则引发异常。
时间: 2023-12-29 15:45:47 浏览: 37
以下是 Python 代码实现:
```python
import math
class NotRightTriangleError(Exception):
pass
def check_right_triangle(a, b, c):
if a*a + b*b == c*c or a*a + c*c == b*b or b*b + c*c == a*a:
return True
else:
return False
try:
a = float(input("请输入三角形的第一条边长:"))
b = float(input("请输入三角形的第二条边长:"))
c = float(input("请输入三角形的第三条边长:"))
if not check_right_triangle(a, b, c):
raise NotRightTriangleError("输入的三条边不能构成直角三角形")
perimeter = a + b + c
s = math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4
print("该三角形的周长为:", perimeter)
print("该三角形的面积为:", s)
except ValueError:
print("输入的边长必须为数字")
except NotRightTriangleError as e:
print(e)
```
程序首先定义了一个 `NotRightTriangleError` 异常类,用于表示输入的三边不能构成直角三角形的情况。然后定义了一个 `check_right_triangle` 函数,用于检查输入的三边是否能构成直角三角形。如果能构成,则返回 True,否则返回 False。
在主程序中,首先使用 `input` 函数获取用户输入的三边长,并尝试将它们转换为浮点数类型。如果输入的不是数字,则会引发一个 `ValueError` 异常。然后通过调用 `check_right_triangle` 函数检查输入的三边是否能构成直角三角形,如果不能,则会引发一个 `NotRightTriangleError` 异常。如果能构成直角三角形,则计算三角形的周长和面积并输出。
注意,在计算三角形的面积时,我们使用了海伦公式,即 `s = sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4`。这里使用了 Python 中的 `math` 模块,需要先导入才能使用。