python使用面相过程面相对象面相函数计算三角形面积
时间: 2024-10-25 13:09:29 浏览: 21
Python中,可以使用面向对象的编程思想来处理三角形面积的计算。这里我将简述三种不同的方法:面向过程、面向对象以及函数式。
**面向过程**:
如果你更偏向于传统的程序流程控制,可以编写一个函数接收三角形的两条边长和夹角作为参数,然后使用海伦公式(对于已知三边的情况)或者特定角度对应的公式(如等腰三角形、直角三角形)来计算面积。示例:
```python
import math
def triangle_area(a, b, angle):
# 计算非直角三角形面积
if angle != 90:
s = (a + b + math.sqrt(a ** 2 + b ** 2 - 2 * a * b * math.cos(math.radians(angle)))) / 2
area = math.sqrt(s * (s - b) * (s - a))
else:
area = 0.5 * a * b
return area
# 示例用法
side_a = 4
side_b = 5
angle_degrees = 60
area = triangle_area(side_a, side_b, angle_degrees)
```
**面向对象**:
面向对象则会创建一个`Triangle`类,包含属性(边长或角度)和方法(计算面积)。比如:
```python
class Triangle:
def __init__(self, a, b, c=None, angle_A=None, angle_B=None, angle_C=None):
self.a, self.b, self.c = a, b, c
self.angle_A, self.angle_B, self.angle_C = angle_A, angle_B, angle_C
def calculate_area(self):
# 使用海伦公式
p = (self.a + self.b + self.c) / 2
area = math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
return area
# 创建并使用对象
triangle = Triangle(4, 5)
area = triangle.calculate_area()
```
**函数式方法**:
Python也支持函数式编程风格,可以定义纯函数接受三角形的边长或角度列表来计算面积:
```python
from functools import reduce
def calculate_triangle_area(a, b, angle):
sides = [a, b]
return abs(reduce(lambda x, y: x * y / 2, map(lambda x: x if x > a + b else 0, sides), sides)) \
if isinstance(angle, tuple) and sum(angle) == 180 else 0.5 * a * b
# 示例用法
area_func = calculate_triangle_area(4, 5, (60, 70))
```
阅读全文