编写实现如下功能: (1)编写3个函数,分别求三角形、矩形和圆形周长。 使用装饰器对上述3个函数的传入参数进行调用和合法性检查。并作出输出示例:
时间: 2024-12-22 08:12:01 浏览: 6
首先,让我们创建三个函数,分别计算三角形、矩形和圆形的周长。假设我们已经有了对应的面积公式,我们可以根据周长的定义(周长 = 2 * (边长1 + 边长2 + ...) 对于三角形,周长 = 4 * 边长 对于矩形,周长 = 2 * (长 + 宽) 对于圆形,周长 = 2 * π * 半径)来编写它们。
然后,我们将使用装饰器来添加参数验证的功能。装饰器本质上是一个可以修改其他函数功能的函数,这里我们使用`functools.wraps`保持原始函数的名称和文档字符串。
```python
import math
from functools import wraps
def check_length(func):
@wraps(func)
def wrapper(side):
if side <= 0:
raise ValueError("边长必须是正数")
return func(side)
return wrapper
# 计算三角形周长
@check_length
def triangle_perimeter(a, b, c):
return a + b + c
# 计算矩形周长
@check_length
def rectangle_perimeter(length, width):
return 2 * (length + width)
# 计算圆形周长
@check_length
def circle_perimeter(radius):
return 2 * math.pi * radius
# 输出示例
try:
print("三角形周长:", triangle_perimeter(3, 4, 5))
print("矩形周长:", rectangle_perimeter(6, 4))
print("圆形周长:", circle_perimeter(3.5))
except ValueError as e:
print(e)
```
在这个例子中,`check_length` 装饰器会确保传入的边长(无论是三角形的一条边还是矩形的长宽)都是正数。如果传入的是非正数,装饰后的函数会抛出一个 `ValueError` 异常。
阅读全文