设计一个平面三角形类,以三条边长为它的三个实例属性,拥有如下实例方法:计算面积、计算周长、计算夹角、判断直角三角形、判断等腰三角形、判断等边三角形、判断锐角三角形,并考虑相应的异常!制作几个实例来验证代码的正确性!
时间: 2023-12-23 08:06:13 浏览: 302
计算三角形的面积 分三次输入三角形的三条边长,输出三角形的面积
好的,我会为您设计一个平面三角形类,并实现对应的实例方法。
```python
import math
class Triangle:
def __init__(self, a, b, c):
if a + b <= c or a + c <= b or b + c <= a:
raise ValueError("三边长无法构成三角形")
self.a = a
self.b = b
self.c = c
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
def angle(self, edge):
if edge not in ['a', 'b', 'c']:
raise ValueError("请输入正确的边长名称:a, b, c")
if edge == 'a':
return math.degrees(math.acos((self.b ** 2 + self.c ** 2 - self.a ** 2) / (2 * self.b * self.c)))
elif edge == 'b':
return math.degrees(math.acos((self.a ** 2 + self.c ** 2 - self.b ** 2) / (2 * self.a * self.c)))
else:
return math.degrees(math.acos((self.a ** 2 + self.b ** 2 - self.c ** 2) / (2 * self.a * self.b)))
def is_right(self):
a, b, c = sorted([self.a, self.b, self.c])
return abs(a ** 2 + b ** 2 - c ** 2) < 1e-6
def is_isosceles(self):
return self.a == self.b or self.b == self.c or self.a == self.c
def is_equilateral(self):
return self.a == self.b == self.c
def is_acute(self):
return self.angle('a') < 90 and self.angle('b') < 90 and self.angle('c') < 90
```
这里我们定义了一个Triangle类,它有三个实例属性:a, b, c,分别表示三角形的三条边长。在初始化时,我们会检验这三条边长是否能够构成一个三角形,如果不能,则会抛出ValueError异常。
接着,我们实现了面积、周长、夹角、是否为直角、等腰、等边、锐角的判断方法。其中,夹角的计算使用的是余弦定理,等腰、等边、锐角的判断都是通过边长和角度的关系来判断的。
现在,我们可以制作一些实例来验证代码的正确性:
```python
# 实例1:普通三角形
t1 = Triangle(3, 4, 5)
print(t1.area()) # 6.0
print(t1.perimeter()) # 12
print(t1.angle('a')) # 36.86989764584401
print(t1.is_right()) # True
print(t1.is_isosceles()) # False
print(t1.is_equilateral()) # False
print(t1.is_acute()) # True
# 实例2:等边三角形
t2 = Triangle(2, 2, 2)
print(t2.area()) # 1.7320508075688772
print(t2.perimeter()) # 6
print(t2.angle('a')) # 60.0
print(t2.is_right()) # False
print(t2.is_isosceles()) # True
print(t2.is_equilateral()) # True
print(t2.is_acute()) # True
# 实例3:无法构成三角形
try:
t3 = Triangle(1, 2, 3)
except ValueError as e:
print(e) # 三边长无法构成三角形
```
这些实例可以验证我们的代码的正确性。
阅读全文