news 2026/3/22 19:02:18

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/3/20 21:13:25

RuoYi-Flowable工作流平台:从零部署到生产上线的完整实战指南

RuoYi-Flowable工作流平台&#xff1a;从零部署到生产上线的完整实战指南 【免费下载链接】RuoYi-Flowable-Plus 本项目基于 RuoYi-Vue-Plus 进行二次开发扩展Flowable工作流功能&#xff0c;支持在线表单设计和丰富的工作流程设计能力。如果觉得这个项目不错&#xff0c;麻烦点…

作者头像 李华
网站建设 2026/3/13 4:54:16

GTA5游戏增强神器YimMenu全方位使用手册

GTA5游戏增强神器YimMenu全方位使用手册 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu 还在为GTA5游戏体…

作者头像 李华
网站建设 2026/3/16 8:20:56

解锁GTA5隐藏玩法:YimMenu模组深度体验攻略

解锁GTA5隐藏玩法&#xff1a;YimMenu模组深度体验攻略 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu 想…

作者头像 李华
网站建设 2026/3/17 16:02:35

OpenPLC Editor:开源工业自动化编程的革命性突破

OpenPLC Editor&#xff1a;开源工业自动化编程的革命性突破 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业4.0时代&#xff0c;自动化控制系统已成为现代制造业的核心。OpenPLC Editor作为一款完全开源的PLC编…

作者头像 李华
网站建设 2026/3/16 12:04:42

B站缓存视频跨平台播放全攻略:从格式壁垒到自由播放

你是否曾经遇到过这样的情况&#xff1a;精心收藏的B站视频突然下架&#xff0c;那些缓存文件在客户端里还能播放&#xff0c;但想在其他设备上观看时却束手无策&#xff1f;今天就让我们一起打破这个技术壁垒&#xff0c;让缓存视频重获新生。 【免费下载链接】m4s-converter …

作者头像 李华
网站建设 2026/3/13 14:04:15

D3KeyHelper智能宏配置:3大核心技巧打造暗黑3高效玩法

D3KeyHelper作为一款专为暗黑3设计的图形化鼠标宏工具&#xff0c;通过智能化的技能管理方案&#xff0c;彻底解放玩家的双手。这款开源工具支持自定义配置&#xff0c;让复杂的技能循环变得简单可控&#xff0c;专注于游戏策略和乐趣体验。 【免费下载链接】D3keyHelper D3Key…

作者头像 李华