5月15日day26打卡

函数专题1

知识点回顾:

  1. 函数的定义
  2. 变量作用域:局部变量和全局变量
  3. 函数的参数类型:位置参数、默认参数、不定参数
  4. 传递参数的手段:关键词参数
  5. 传递参数的顺序:同时出现三种参数类型时

作业:

题目1:计算圆的面积

  • 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 = π * radius² (可以使用 math.pi 作为 π 的值)
  • 要求: 函数接收一个位置参数 radius。计算半径为5、0、-1时候的面积
  • 注意点:可以采取try-except 使函数变得更加稳健,如果传入的半径为负数,函数应该返回 0 (或者可以考虑引发一个ValueError,但为了简单起见,先返回0)。
python 复制代码
import math

def calculate_circle_area(radius):
    """计算圆的面积(处理负数和非数值输入)
    
    参数:
        radius (int/float): 圆的半径
        
    返回:
        float: 圆的面积(半径负数或非数值时返回0)
    """
    try:
        # 先检查半径是否为负数(数值类型才会走到这里)
        if radius < 0:
            return 0.0
        # 正常计算面积
        return math.pi * (radius ** 2)
    except (TypeError, ValueError):
        # 非数值类型输入时返回0
        return 0.0

# 测试用例
if __name__ == "__main__":
    print("半径5的面积:", calculate_circle_area(5))   # 约78.5398...
    print("半径0的面积:", calculate_circle_area(0))    # 0.0
    print("半径-1的面积:", calculate_circle_area(-1))  # 0.0

改成自己输入圆半径 :

python 复制代码
import math

def calculate_circle_area(radius):
    """计算圆的面积(处理负数和非数值输入)
    
    参数:
        radius (int/float/str): 圆的半径(支持数值或数字字符串)
        
    返回:
        float: 圆的面积(半径负数或非数值时返回0)
    """
    try:
        # 关键修复:先将输入转换为浮点数(支持数字字符串)
        r = float(radius)
        # 再检查是否为负数
        if r < 0:
            return 0.0
        # 正常计算面积
        return math.pi * (r ** 2)
    except (TypeError, ValueError):
        # 无法转换为数值时返回0(如"abc"、None等)
        return 0.0

# 测试用例(用户输入模式保持不变)
if __name__ == "__main__":
    user_radius = input("请输入圆的半径(支持数字/负数/非数字): ")
    area = calculate_circle_area(user_radius)
    print(f"计算结果: 圆的面积为 {area}")

题目2:计算矩形的面积

  • 任务: 编写一个名为 calculate_rectangle_area 的函数,该函数接收矩形的长度 length 和宽度 width 作为参数,并返回矩形的面积。
  • 公式: 矩形面积 = length * width
  • 要求 :函数接收两个位置参数 length 和 width。
    • 函数返回计算得到的面积。
    • 如果长度或宽度为负数,函数应该返回 0。
python 复制代码
import math

# ... 原有 calculate_circle_area 函数保持不变 ...

def calculate_rectangle_area(length, width):
    """计算矩形的面积(处理负数和非数值输入)
    
    参数:
        length (int/float): 矩形的长度
        width (int/float): 矩形的宽度
        
    返回:
        float: 矩形的面积(长度/宽度负数或非数值时返回0)
    """
    try:
        # 检查长度或宽度是否为负数(仅当参数是数值类型时才会执行到这里)
        if length < 0 or width < 0:
            return 0.0
        # 正常计算矩形面积
        return length * width
    except (TypeError, ValueError):
        # 处理非数值类型输入(如字符串、None等)
        return 0.0

# 测试用例(新增)
if __name__ == "__main__":
    # ... 原有圆面积测试用例保持不变 ...
    print("矩形(长5,宽3)的面积:", calculate_rectangle_area(5, 3))    # 输出: 15.0
    print("矩形(长-1,宽2)的面积:", calculate_rectangle_area(-1, 2))  # 输出: 0.0
    print("矩形(长0,宽0)的面积:", calculate_rectangle_area(0, 0))    # 输出: 0.0
    print("矩形(长'abc',宽2)的面积:", calculate_rectangle_area("abc", 2))  # 输出: 0.0

改成自己输入矩形长宽:

python 复制代码
def calculate_rectangle_area(length, width):
    """计算矩形的面积(处理负数和非数值输入)
    
    参数:
        length (int/float/str): 矩形的长度(支持数值或数字字符串)
        width (int/float/str): 矩形的宽度(支持数值或数字字符串)
        
    返回:
        float: 矩形的面积(长度/宽度负数或非数值时返回0)
    """
    try:
        # 关键修复:先将输入转换为浮点数(支持数字字符串)
        l = float(length)
        w = float(width)
        # 再检查是否为负数
        if l < 0 or w < 0:
            return 0.0
        # 正常计算矩形面积
        return l * w
    except (TypeError, ValueError):
        # 处理非数值类型输入(如"abc"、None等)
        return 0.0

# 测试用例(用户输入模式保持不变)
if __name__ == "__main__":
    # ... 原有圆面积测试用例保持不变 ...
    user_length = input("请输入矩形的长度(支持数字/负数/非数字): ")
    user_width = input("请输入矩形的宽度(支持数字/负数/非数字): ")
    area = calculate_rectangle_area(user_length, user_width)
    print(f"计算结果: 矩形的面积为 {area}")

题目3:计算任意数量数字的平均值

  • 任务: 编写一个名为 calculate_average 的函数,该函数可以接收任意数量的数字作为参数(引入可变位置参数 (*args)),并返回它们的平均值。
  • 要求: 使用 *args 来接收所有传入的数字。
    • 如果没有任何数字传入,函数应该返回 0。
    • 函数返回计算得到的平均值。
python 复制代码
# ... 原有 calculate_circle_area 和 calculate_rectangle_area 函数保持不变 ...
def calculate_average(*args):
    """计算任意数量数字的平均值
    
    参数:
        *args (int/float): 任意数量的数字参数
        
    返回:
        float: 数字的平均值(无参数时返回0)
    """
    # 处理无参数传入的情况
    if not args:
        return 0.0
    # 计算总和与数量,返回平均值
    total = sum(args)
    return total / len(args)

# 测试用例(新增)
if __name__ == "__main__":
    # ... 原有圆/矩形面积测试用例保持不变 ...
    print("平均值(1,2,3):", calculate_average(1, 2, 3))    # 输出: 2.0
    print("平均值(无参数):", calculate_average())          # 输出: 0.0
    print("平均值(5,5,5,5):", calculate_average(5, 5, 5, 5))  # 输出: 5.0
    print("平均值(10,20,30):", calculate_average(10, 20, 30))  # 输出: 20.0

改成自己输入一串数字,数字之间用逗号隔开

python 复制代码
# 计算任意数量数字的平均值
def calculate_average(*args):
    """计算任意数量数字的平均值
    
    参数:
        *args (int/float): 任意数量的数字参数
        
    返回:
        float: 数字的平均值(无参数时返回0)
    """
    if not args:
        return 0.0
    total = sum(args)
    return total / len(args)

# 测试用例(修改为用户输入模式)
if __name__ == "__main__":
    # ... 原有圆/矩形面积测试用例保持不变 ...
    
    # 关键修改1:提示信息改为逗号分隔
    user_input = input("请输入需要计算平均值的数字(数字之间用逗号分隔,输入完成后按回车): ")
    
    # 关键修改2:按逗号分割输入内容(原split('\t')改为split(','))
    raw_numbers = [num.strip() for num in user_input.split(',') if num.strip()]
    
    # 尝试将分割后的内容转换为数字列表(逻辑不变)
    num_list = []
    for num_str in raw_numbers:
        try:
            num = float(num_str)
            num_list.append(num)
        except ValueError:
            # 跳过无法转换为数字的输入(如"abc")
            continue
    
    # 调用函数计算平均值(逻辑不变)
    average = calculate_average(*num_list)
    print(f"您输入的数字平均值为: {average}")

题目4:打印用户信息

  • 任务: 编写一个名为 print_user_info 的函数,该函数接收一个必需的参数 user_id,以及任意数量的额外用户信息(作为关键字参数)。
  • 要求:
    • user_id 是一个必需的位置参数。
    • 使用 **kwargs 来接收额外的用户信息。
    • 函数打印出用户ID,然后逐行打印所有提供的额外信息(键和值)。
    • 函数不需要返回值
python 复制代码
def print_user_info(user_id,**kwargs):# 定义函数,接收必需的用户ID和任意关键字参数
    print("User ID:", user_id)# 打印用户ID(必需信息)
    for key, value in kwargs.items():# 遍历所有额外用户信息(键值对)
        print(key, ":", value)# 逐行打印额外信息的键和值
 
print_user_info(0)
print("-"*20)
print_user_info(1, name="Alice", age=25, city="New York")
print("-"*20)
print_user_info(2, name="Bob", age=30, city="Los Angeles", occupation="Engineer")

题目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."
python 复制代码
def describe_shape(shape_name, color="black", **kwargs):
    print(f"A {color} {shape_name} ")
    if kwargs:
        print("with dimensions:")
        for key, value in kwargs.items():
            print(f"{key}={value}")
    else:
        print("with no specific dimensions.")
 
# 示例
desc1 = describe_shape("circle", radius=5, color="red")
print(desc1)
# 输出: A red circle with dimensions: radius=5
print("-"*20)
 
desc2 = describe_shape("rectangle", length=10, width=4)
print(desc2)
# 输出: A black rectangle with dimensions: length=10, width=4
print("-"*20)
 
desc3 = describe_shape("triangle", base=6, height=8, color="blue")
print(desc3)
# 输出: A blue triangle with dimensions: base=6, height=8
print("-"*20)
 
desc4 = describe_shape("point", color="green")
print(desc4)
# 输出: A green point with no specific dimensions.
python 复制代码
desc1 = describe_shape("circle", radius=5, color="red")
print(desc1)
# 输出: A red circle with dimensions: radius=5

desc2 = describe_shape("rectangle", length=10, width=4)
print(desc2)
# 输出: A black rectangle with dimensions: length=10, width=4

desc3 = describe_shape("triangle", base=6, height=8, color="blue")
print(desc3)
# 输出: A blue triangle with dimensions: base=6, height=8

desc4 = describe_shape("point", color="green")
print(desc4)
# 输出: A green point with no specific dimensions.

@浙大疏锦行

相关推荐
思则变3 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络3 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find4 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取5 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector7 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习7 小时前
Python入门Day2
开发语言·python
Vertira7 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉7 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗7 小时前
黑马python(二十四)
开发语言·python
晓13138 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr