作业:
题目1:计算圆的面积
- 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 = π * radius² (可以使用 math.pi 作为 π 的值)
- 要求:函数接收一个位置参数 radius。计算半径为5、0、-1时候的面积
- 注意点:可以采取try-except 使函数变得更加稳健,如果传入的半径为负数,函数应该返回 0 (或者可以考虑引发一个ValueError,但为了简单起见,先返回0)。
import mathdef calculate_circle_area(radius):"""计算圆的面积参数:radius: 圆的半径返回:圆的面积,如果半径为负数则返回0"""try:# 尝试将输入转换为数值类型radius = float(radius)# 检查半径是否为负数if radius < 0:return 0# 计算面积:π * radius²area = math.pi * radius **2return areaexcept (ValueError, TypeError):# 处理无法转换为数值的情况return 0# 测试不同半径的情况
print("半径为5时的面积:", calculate_circle_area(5))
print("半径为0时的面积:", calculate_circle_area(0))
print("半径为-1时的面积:", calculate_circle_area(-1))
题目2:计算矩形的面积
- 任务: 编写一个名为 calculate_rectangle_area 的函数,该函数接收矩形的长度 length 和宽度 width 作为参数,并返回矩形的面积。
- 公式: 矩形面积 = length * width
- 要求:函数接收两个位置参数 length 和 width。
- 函数返回计算得到的面积。
- 如果长度或宽度为负数,函数应该返回 0。
def calculate_rectangle_area(length, width):"""计算矩形的面积参数:length: 矩形的长度width: 矩形的宽度返回:矩形的面积,如果长度或宽度为负数则返回0"""# 检查长度或宽度是否为负数if length < 0 or width < 0:return 0# 计算并返回矩形面积return length * width# 测试不同情况
print("长度为5,宽度为3时的面积:", calculate_rectangle_area(5, 3))
print("长度为0,宽度为4时的面积:", calculate_rectangle_area(0, 4))
print("长度为-2,宽度为6时的面积:", calculate_rectangle_area(-2, 6))
print("长度为5,宽度为-3时的面积:", calculate_rectangle_area(5, -3))
题目3:计算任意数量数字的平均值
- 任务: 编写一个名为 calculate_average 的函数,该函数可以接收任意数量的数字作为参数(引入可变位置参数 (*args)),并返回它们的平均值。
- 要求:使用 *args 来接收所有传入的数字。
- 如果没有任何数字传入,函数应该返回 0。
- 函数返回计算得到的平均值。
def calculate_average(*args):"""计算任意数量数字的平均值参数:*args: 任意数量的数字返回:所有数字的平均值,如果没有传入数字则返回0"""# 检查是否有数字传入if len(args) == 0:return 0# 计算总和与平均值total = sum(args)average = total / len(args)return average# 测试不同情况
print("没有传入数字的平均值:", calculate_average())
print("单个数字5的平均值:", calculate_average(5))
print("数字1, 2, 3, 4, 5的平均值:", calculate_average(1, 2, 3, 4, 5))
print("数字10, 20, 30的平均值:", calculate_average(10, 20, 30))
题目4:打印用户信息
- 任务: 编写一个名为 print_user_info 的函数,该函数接收一个必需的参数 user_id,以及任意数量的额外用户信息(作为关键字参数)。
- 要求:
- user_id 是一个必需的位置参数。
- 使用 **kwargs 来接收额外的用户信息。
- 函数打印出用户ID,然后逐行打印所有提供的额外信息(键和值)。
- 函数不需要返回值
-
def print_user_info(user_id, **kwargs):"""打印用户信息参数:user_id: 必需的用户ID(位置参数)**kwargs: 任意数量的额外用户信息(关键字参数)返回:无返回值,直接打印信息"""# 打印用户IDprint(f"用户ID: {user_id}")# 打印额外的用户信息if kwargs: # 检查是否有额外信息print("用户信息:")for key, value in kwargs.items():print(f" {key}: {value}")else:print("没有提供额外的用户信息")# 测试不同情况 print("--- 测试1:仅用户ID ---") print_user_info(1001)print("\n--- 测试2:用户ID + 部分信息 ---") print_user_info(1002, 姓名="张三", 年龄=30, 性别="男")print("\n--- 测试3:用户ID + 更多信息 ---") print_user_info(1003, 用户名="lisi", 邮箱="lisi@example.com", 城市="北京", 爱好=["阅读", "运动"])
题目5:格式化几何图形描述
- 任务: 编写一个名为 describe_shape 的函数,该函数接收图形的名称 shape_name (必需),一个可选的 color (默认 “black”),以及任意数量的描述该图形尺寸的关键字参数 (例如 radius=5 对于圆,length=10, width=4 对于矩形)。
- 要求:shape_name 是必需的位置参数。
- color 是一个可选参数,默认值为 “black”。
- 使用 **kwargs 收集描述尺寸的参数。
- 函数返回一个描述字符串,格式如下:
- “A [color] [shape_name] with dimensions: [dim1_name]=[dim1_value], [dim2_name]=[dim2_value], …”如果 **kwargs 为空,则尺寸部分为 “with no specific dimensions.”
def describe_shape(shape_name, color="black", **kwargs):"""生成几何图形的描述字符串参数:shape_name: 图形名称(必需的位置参数)color: 图形颜色(可选参数,默认值为"black")**kwargs: 描述图形尺寸的关键字参数返回:格式化的图形描述字符串"""# 处理尺寸部分if kwargs:# 将关键字参数转换为"key=value"格式的字符串列表dim_parts = [f"{key}={value}" for key, value in kwargs.items()]# 用逗号连接所有尺寸描述dim_str = ", ".join(dim_parts)dimensions = f"with dimensions: {dim_str}"else:dimensions = "with no specific dimensions."# 组合完整描述字符串return f"A {color} {shape_name} {dimensions}"# 测试不同情况 print(describe_shape("circle", radius=5)) # 使用默认颜色和一个尺寸参数 print(describe_shape("rectangle", "red", length=10, width=4)) # 指定颜色和多个尺寸参数 print(describe_shape("triangle", "blue")) # 只有图形名称和颜色,无尺寸参数 print(describe_shape("square", color="green", side_length=7)) # 显式指定color参数名
@浙大疏锦行