设计编写一个求面积的函数,包含*p参数和一个默认值参数k,参数k默认为None,若没有重新传输数据给参数k,默认p中的第一个参数为圆的半径,函数返回圆的面积,若传入1给参数k,则p中第一个参数为正方形的边长,返回正方形的面积,若传入2给参数k,则p中前两个参数分别为长方形的两个边长,返回长方形面积,若传入3给参数k,则p中前三个参数分别为三角形的三个边长,返回此三角形的面积。采用try-except异常处理结构,当出现k值不符或p中数据不匹配时,给出错误信息提示,结束程序运行。
时间: 2023-05-11 13:03:27 浏览: 69
好的,以下是我为您编写的求面积的函数:
```python
import math
def area(*p, k=None):
try:
if k is None:
r = p[0]
return math.pi * r ** 2
elif k == 1:
a = p[0]
return a ** 2
elif k == 2:
a, b = p[0], p[1]
return a * b
elif k == 3:
a, b, c = p[0], p[1], p[2]
s = (a + b + c) / 2
return math.sqrt(s * (s - a) * (s - b) * (s - c))
else:
raise ValueError("参数k值不符合要求!")
except (IndexError, TypeError, ValueError) as e:
print("错误信息提示:", e)
```
您可以这样调用函数:
```python
print(area(3)) # 输出圆的面积
print(area(4, k=1)) # 输出正方形的面积
print(area(2, 5, k=2)) # 输出长方形的面积
print(area(3, 4, 5, k=3)) # 输出三角形的面积
print(area(3, 4, 5, k=4)) # 输出错误信息提示
```
希望这个函数能够满足您的需求!