用Python 编写程序,按用户输入的三角形3条边判断能否构成直角三角形,若能构成则计算三角形的面积和周长,否则引发异常。
时间: 2023-12-02 14:04:50 浏览: 186
好的,下面是Python代码实现:
```python
import math
class Triangle:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def is_right_triangle(self):
sides = [self.a, self.b, self.c]
sides.sort()
return math.isclose(sides[0] ** 2 + sides[1] ** 2, sides[2] ** 2, rel_tol=1e-9)
def area(self):
p = (self.a + self.b + self.c) / 2
return math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
def perimeter(self):
return self.a + self.b + self.c
try:
a = float(input("请输入三角形的第一条边长:"))
b = float(input("请输入三角形的第二条边长:"))
c = float(input("请输入三角形的第三条边长:"))
triangle = Triangle(a, b, c)
if triangle.is_right_triangle():
print("能构成直角三角形")
print("三角形的面积为:", triangle.area())
print("三角形的周长为:", triangle.perimeter())
else:
raise Exception("不能构成直角三角形")
except ValueError:
print("输入的边长必须是数字")
except Exception as e:
print(e)
```
下面是程序的说明:
1. 定义了一个名为`Triangle`的类,用于存储三角形的三条边;
2. `is_right_triangle()`方法用于判断三角形是否为直角三角形,使用了数学库中的`isclose()`方法判断两个数是否相近(因为计算机存储浮点数时存在误差);
3. `area()`方法用于计算三角形的面积,使用海伦公式;
4. `perimeter()`方法用于计算三角形的周长;
5. 在主程序中,先获取用户输入的三条边长,然后判断是否能构成直角三角形,如果能,就输出面积和周长,否则引发异常;
6. 异常处理分为两种情况:输入的边长不是数字和不能构成直角三角形。
阅读全文