news 2026/10/22 14:03:56

DAY30 函数专题1:函数定义与参数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAY30 函数专题1:函数定义与参数

前言:今天主要是完成了关于函数定义与参数的5个题目从中都有不一样的收获!

一、题目1:计算圆的面积

1. 任务:编写一个名为calculate_circle_area的函数,该函数接收圆的半径radius作为参数,并返回圆的面积。圆的面积=Π*radius^2(可以使用math.pi作为Π的值)

2. 要求:函数接收一个位置参数radius。计算半径为5、0、-1时候的面积

3. 注意点:可以采取try-except使函数变得更加稳健,如果传入的半径为负数,函数应该返回0(或者可以考虑引发一个ValueError)。

代码:

import math def cal_circle_area(r): try: if r < 0 : return 0 else: area = math.pi*(r**2) return area except TypeError: print(f"ValueError") #测试 test_r = [5,0,-1] print("计算不同半径圆的面积") print("-" * 30) for r in test_r: area = cal_circle_area(r) print(f"半径 = {r},面积 = {area}") test_e = "a" area_e = cal_circle_area(test_e)

运行结果:

思考:

书写思路

1. 先引入所需要的库

2. 再定义函数,并给定相关参数

3. 在函数中采用try: except TypeError:结构 在try中进行数值类型判断并实现功能,在except TypeError:结构中给出错误情况转入的方向避免程序卡死,数据丢失

4. 定义相关变量,对函数进行调用

二、题目2:计算矩形的面积

1. 任务:编写一个名为calculate_rectangle_area的函数,该函数接收矩形的度length和宽度width作为参数,并返回矩形的面积。

2. 公式:矩形面积=length*width

3. 要求:函数接收两个位置参数length和width。

(1)函数返回计算得到的面积。

(2)如果长度或宽度为负数,函数应该返回0。

代码:

def calculate_rectangle_area(length,width): try: if length < 0 or width < 0: return 0 else: area = length * width return area except TypeError: print(f"ValueError") test_case = [(3,2), (3,0), (0,3), (0,0), (-1,5), (1.5,2) ] print("计算不同长宽矩形的面积") print("-" * 30) for length , width in test_case: area = calculate_rectangle_area(length,width) print(f"长度 = {length}, 宽度 = {width}, 面积 = {area}")

运行结果:

思考:

此题目与题目一最大的区别在于,此题目的参数要传两个,故我们采用元组列表(list of tuples)来对相关测试变量进行存贮。

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

1. 任务:编写一个名为calculate_average的函数,该函数可以接收任意数量的数字作为参数(引入可变位置参数(*args)),并返回它们的平均值。

2. 要求:使用*args来接收所有传入的数字。

(1)、如果没有任何数字传入,函数应该返回0。

(2)、函数返回计算得到的平均值。

代码:

def calculate_average(*args): """ 计算任意数量数字的平均值 参数: *args: 可变数量的数值参数 返回: 所有数字的平均值。如果没有传入任何数字,返回0 """ # 检查是否传入了数字 if len(args) == 0: return 0 try: # 计算总和 total = sum(args) # 计算平均值 average = total / len(args) return average except (TypeError, ZeroDivisionError): # 处理可能的异常(虽然len(args)!=0时不会除零) return 0 # 测试函数 print("测试计算平均值函数:") print("-" * 30) # 测试用例 test_cases = [ (1, 2, 3, 4, 5), # 多个整数 (10, 20, 30), # 三个数 (3.5, 4.5, 5.5), # 小数 (7,), # 只有一个数 (), # 没有参数 (0, 0, 0, 0), # 全是0 (-1, 0, 1), # 包含负数 (2.2, 3.3, 4.4, 5.5) # 多个小数 ] # 2. enumerate(test_cases, 1)的作用: # enumerate()函数会同时返回索引和元素值。 # enumerate(test_cases, 1) 相当于: # 1, (1, 2, 3, 4, 5) # 2, (10, 20, 30) # 3, (3.5, 4.5, 5.5) # 4, (7,) # 5, () # 6, (-1, 0, 1) for i, numbers in enumerate(test_cases, 1): result = calculate_average(*numbers) if len(numbers) == 0: print(f"测试{i}: 无参数传入, 平均值 = {result}") else: print(f"测试{i}: 数字 {numbers}, 平均值 = {result:.4f}")

运行结果:

思考:

此函数的参数使用*args可接收任意数量的参数!

四、题目4 :打印用户信息

1. 任务:编写一个名为print_user_info的函数,该函数接收一个必需的参数user_id,以及任意数量的额外用户信息(作为关键字参数)。

2. 要求:

(1)user_id是一个必需的位置参数。

(2)使用**kwargs来接收额外的用户信息。

(3)函数打印出用户ID,然后逐行打印所有提供的额外信息(键和值)。

(4)函数不需要返回值

代码:

# **kwargs:可变关键字参数,接收任意数量的键值对 # 在函数内部,kwargs是一个字典 可以像操作字典一样访问:kwargs.items(), kwargs.keys(), kwargs.values() def print_user_info(user_id, **kwargs): """ 打印用户信息 参数: user_id: 必需的用户ID(位置参数) **kwargs: 任意数量的关键字参数,包含额外用户信息 """ # 打印用户ID print(f"用户ID: {user_id}") # 打印额外信息(如果有的话) if kwargs: print("额外信息:") # 逐行打印所有关键字参数 for key, value in kwargs.items(): print(f" {key}: {value}") else: print("无额外信息") # 函数不需要返回值,所以不写return语句或只写return # 测试函数 print("=== 测试1: 只有用户ID ===") print_user_info("A001") print("\n=== 测试2: 有额外信息 ===") print_user_info("B002", name="张三", age=25, city="北京") print("\n=== 测试3: 多个额外信息 ===") print_user_info("C003", name="李四", age=30, email="lisi@example.com", department="技术部", phone="13800138000")

运行结果:

思考:

**kwargs的特点:
1、接收任意数量的关键字参数
2、在函数内部,kwargs是一个字典
3、可以像操作字典一样访问:kwargs.items(), kwargs.keys(), kwargs.values()

五、题目五:格式化几何图形描述

1. 任务:编写一个名为describe_shape的函数,该函数接收图形的名称shape_name(必需),一个可选的color(默认"black"),以及任意数量的描述该图形尺寸的关键字参数(例如radius=5对于圆,length=10,width=4对于矩形.)

2. 要求:shape_name是必需的位置参数。

(1)ocolor是一个可选参数,默认值为"black"。

(2)使用**kwargs收集描述尺寸的参数。

(3)函数返回一个描述字符串

def describe_shape(shape_name, color="black", **kwargs): """ 格式化几何图形描述 参数: shape_name: 必需的位置参数,图形名称 color: 可选参数,颜色,默认为"black" **kwargs: 描述图形尺寸的关键字参数 返回: 描述字符串 """ # 基础描述部分 description = f"A {color} {shape_name}" # 尺寸描述部分 if kwargs: # 如果有尺寸参数 dimensions = [] for key, value in kwargs.items(): dimensions.append(f"{key}={value}") dimensions_str = ", ".join(dimensions) description += f" with dimensions: {dimensions_str}." else: # 如果没有尺寸参数 description += " with no specific dimensions." return description # 测试函数 print("=== 测试 describe_shape 函数 ===") print("-" * 40) # 测试1: 有尺寸参数的圆 circle_desc1 = describe_shape("circle", color="red", radius=5) print(f"测试1: {circle_desc1}") # 测试2: 有多个尺寸参数的矩形 rectangle_desc = describe_shape("rectangle", color="blue", length=10, width=4, height=2) print(f"测试2: {rectangle_desc}") # 测试3: 使用默认颜色 triangle_desc = describe_shape("triangle", side1=3, side2=4, side3=5) print(f"测试3: {triangle_desc}") # 测试4: 没有尺寸参数 square_desc = describe_shape("square", color="green") print(f"测试4: {square_desc}") # 测试5: 多个参数组合 pentagon_desc = describe_shape("pentagon", "yellow", side=7, apothem=4.8) print(f"测试5: {pentagon_desc}") # 测试6: 只有必需参数 shape_desc = describe_shape("hexagon") print(f"测试6: {shape_desc}")

运行结果:

@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 12:26:08

终极指南:如何让Joy-Con手柄在PC上完美运行

终极指南&#xff1a;如何让Joy-Con手柄在PC上完美运行 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 想要将任天堂Switch的Joy-Con手柄连接到PC电脑上…

作者头像 李华
网站建设 2026/10/21 13:26:49

AKShare金融数据接口库:零基础到实战应用的完整指南

AKShare是一款基于Python的开源金融数据接口库&#xff0c;为量化投资者、数据分析师和金融研究人员提供全面的金融市场数据获取解决方案。通过简洁的API调用&#xff0c;用户可以轻松获取股票、基金、债券、期货等多样化金融数据&#xff0c;大幅提升投资分析和研究效率。 【免…

作者头像 李华
网站建设 2026/10/20 18:51:52

Mod Assistant:Beat Saber玩家的终极PC模组管理神器

Mod Assistant&#xff1a;Beat Saber玩家的终极PC模组管理神器 【免费下载链接】ModAssistant Simple Beat Saber Mod Installer 项目地址: https://gitcode.com/gh_mirrors/mod/ModAssistant 想要让《Beat Saber》游戏体验更上一层楼&#xff1f;Mod Assistant这款专业…

作者头像 李华
网站建设 2026/10/21 18:34:28

终极指南:如何让Figma界面秒变中文,设计师效率翻倍指南

终极指南&#xff1a;如何让Figma界面秒变中文&#xff0c;设计师效率翻倍指南 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而头疼吗&#xff1f;FigmaCN中文插…

作者头像 李华
网站建设 2026/10/20 9:53:00

Ofd2Pdf完全指南:5步精通OFD转PDF高效转换

OFD作为国内广泛应用的版式文档标准&#xff0c;在办公场景、企业文档管理中广泛应用。Ofd2Pdf这款专业转换工具让OFD到PDF的格式转换变得轻松简单&#xff0c;无论是个别文件处理还是批量转换需求&#xff0c;都能提供稳定可靠的服务。 【免费下载链接】Ofd2Pdf Convert OFD f…

作者头像 李华
网站建设 2026/10/21 7:39:47

终极表情解决方案:Noto Emoji完整使用指南

在数字化交流日益频繁的今天&#xff0c;你是否曾遇到过表情显示为"豆腐块"的尴尬&#xff1f;或者在不同设备上看到完全不同的表情效果&#xff1f;这些问题都可以通过Noto Emoji项目得到完美解决。 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https…

作者头像 李华