设计一个平面三角形类,以三条边长为它的三个实例属性,拥有如下实例方法: 计算面积、计算周长、计算夹角、判断直角三角形、判断等腰三角形、判断等边三角形、判断锐角三角形、判断钝角三角形,并考虑相应的异常!制作几个实例来验证代码的正确性!
时间: 2023-12-23 13:03:28 浏览: 70
C++课程设计之三角形的种类和面积
好的,我来为您设计一个平面三角形类:
```python
import math
class Triangle:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def area(self):
s = (self.a + self.b + self.c) / 2
area = math.sqrt(s * (s - self.a) * (s - self.b) * (s - self.c))
return area
def perimeter(self):
perimeter = self.a + self.b + self.c
return perimeter
def angle(self):
alpha = math.degrees(math.acos((self.b**2 + self.c**2 - self.a**2) / (2 * self.b * self.c)))
beta = math.degrees(math.acos((self.a**2 + self.c**2 - self.b**2) / (2 * self.a * self.c)))
gamma = math.degrees(math.acos((self.a**2 + self.b**2 - self.c**2) / (2 * self.a * self.b)))
return (alpha, beta, gamma)
def is_right(self):
if (self.a**2 + self.b**2 == self.c**2) or (self.a**2 + self.c**2 == self.b**2) or (self.b**2 + self.c**2 == self.a**2):
return True
else:
return False
def is_isosceles(self):
if self.a == self.b or self.a == self.c or self.b == self.c:
return True
else:
return False
def is_equilateral(self):
if self.a == self.b == self.c:
return True
else:
return False
def is_acute(self):
if self.a**2 + self.b**2 > self.c**2 and self.a**2 + self.c**2 > self.b**2 and self.b**2 + self.c**2 > self.a**2:
return True
else:
return False
def is_obtuse(self):
if self.a**2 + self.b**2 < self.c**2 or self.a**2 + self.c**2 < self.b**2 or self.b**2 + self.c**2 < self.a**2:
return True
else:
return False
```
其中,`__init__` 方法用于初始化三角形的三条边长,`area` 方法用于计算三角形的面积,`perimeter` 方法用于计算三角形的周长,`angle` 方法用于计算三角形的三个角度,`is_right` 方法用于判断三角形是否为直角三角形,`is_isosceles` 方法用于判断三角形是否为等腰三角形,`is_equilateral` 方法用于判断三角形是否为等边三角形,`is_acute` 方法用于判断三角形是否为锐角三角形,`is_obtuse` 方法用于判断三角形是否为钝角三角形。
下面是几个用于验证代码的实例:
```python
# 创建一个三边长度分别为3、4、5的三角形
triangle1 = Triangle(3, 4, 5)
print("面积:", triangle1.area()) # 预期输出:6.0
print("周长:", triangle1.perimeter()) # 预期输出:12
print("三个角度:", triangle1.angle()) # 预期输出:(36.86989764584402, 53.13010235415598, 90.0)
print("是否为直角三角形:", triangle1.is_right()) # 预期输出:True
print("是否为等腰三角形:", triangle1.is_isosceles()) # 预期输出:False
print("是否为等边三角形:", triangle1.is_equilateral()) # 预期输出:False
print("是否为锐角三角形:", triangle1.is_acute()) # 预期输出:True
print("是否为钝角三角形:", triangle1.is_obtuse()) # 预期输出:False
# 创建一个三边长度分别为3、3、3的等边三角形
triangle2 = Triangle(3, 3, 3)
print("面积:", triangle2.area()) # 预期输出:3.897114317029974
print("周长:", triangle2.perimeter()) # 预期输出:9
print("三个角度:", triangle2.angle()) # 预期输出:(60.0, 60.0, 60.0)
print("是否为直角三角形:", triangle2.is_right()) # 预期输出:False
print("是否为等腰三角形:", triangle2.is_isosceles()) # 预期输出:True
print("是否为等边三角形:", triangle2.is_equilateral()) # 预期输出:True
print("是否为锐角三角形:", triangle2.is_acute()) # 预期输出:True
print("是否为钝角三角形:", triangle2.is_obtuse()) # 预期输出:False
# 创建一个三边长度分别为2、3、5的三角形(无法构成三角形)
try:
triangle3 = Triangle(2, 3, 5)
except ValueError as e:
print(e) # 预期输出:不能构成三角形
```
阅读全文