Python打卡第30天

@浙大疏锦行

上期函数作业:

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | def calculate_circle_area(radius): ``""" ``该函数接收圆的半径radius作为参数,并返回圆的面积。 ``圆的面积公式为:面积 = π * 半径^2 ``""" ``import math ``print``(f``"\n尝试计算"``) ``try``: ``area ``= math.pi ``* (radius ``*``* 2``) ``except TypeError: ``print``(``"输入的半径必须是一个数字。"``) ``except ValueError: ``print``(``"输入的半径必须是一个非负数。"``) ``except Exception as e: ``print``(f``"发生了一个错误: {e}"``) ``else``: ``print``(f``"计算成功,圆的面积为: {area}"``) ``return area # 测试函数 if __name__ ``=``= "__main__"``: ``# 测试用例 ``test_radii ``= [``5``, ``-``3``, ``'a'``, ``0``] ``for radius ``in test_radii: ``print``(f``"\n测试半径: {radius}"``) ``calculate_circle_area(radius) def calculate_rectangle_area(length, width): ``""" ``该函数接收矩形的长度length和宽度width作为参数,并返回矩形的面积。 ``矩形的面积公式为:面积 = 长度 * 宽度 ``""" ``print``(f``"\n尝试计算"``) ``try``: ``area ``= length ``* width ``except TypeError: ``print``(``"输入的长度和宽度必须是数字。"``) ``except ValueError: ``print``(``"输入的长度和宽度必须是非负数。"``) ``except Exception as e: ``print``(f``"发生了一个错误: {e}"``) ``else``: ``print``(f``"计算成功,矩形的面积为: {area}"``) ``return area # 测试函数 if __name__ ``=``= "__main__"``: ``# 测试用例 ``test_dimensions ``= [(``5``, ``3``), (``-``2``, ``4``), (``3``, ``'b'``), (``0``, ``0``)] ``for length, width ``in test_dimensions: ``print``(f``"\n测试长度: {length}, 宽度: {width}"``) ``calculate_rectangle_area(length, width) def calculate_average(``*``args): ``""" ``该函数接收一个数字列表作为参数,并返回列表的平均值。 ``平均值公式为:平均值 = 数字总和 / 数字个数 ``""" ``print``(f``"\n尝试计算"``) ``try``: ``if not args: ``raise ValueError(``"列表不能为空。"``) ``average ``= sum``(args) ``/ len``(args) ``except TypeError: ``print``(``"输入的必须是一个数字列表。"``) ``except ValueError as ve: ``print``(ve) ``except Exception as e: ``print``(f``"发生了一个错误: {e}"``) ``else``: ``print``(f``"计算成功,平均值为: {average}"``) ``return average # 测试函数 if __name__ ``=``= "__main__"``: ``# 测试用例 ``test_numbers ``= [ ``[``1``, ``2``, ``3``, ``4``, ``5``], ``[], ``[``1``, ``'a'``, ``3``], ``[``10``, ``20``, ``30``] ``] ``for numbers ``in test_numbers: ``print``(f``"\n测试数字列表: {numbers}"``) ``calculate_average(``*``numbers) def print_user_info(user_id,``*``*``kwargs): ``""" ``该函数接收用户ID和其他可选的关键字参数,并打印用户信息。 ``""" ``print``(f``"\n尝试打印用户信息"``) ``try``: ``if not isinstance``(user_id, ``int``): ``raise TypeError(``"用户ID必须是一个整数。"``) ``print``(f``"用户ID: {user_id}"``) ``for key, value ``in kwargs.items(): ``print``(f``"{key}: {value}"``) ``except TypeError as te: ``print``(te) ``except Exception as e: ``print``(f``"发生了一个错误: {e}"``) ``else``: ``print``(``"用户信息打印成功。"``) # 测试函数 if __name__ ``=``= "__main__"``: ``# 测试用例 ``test_users ``= [ ``(``1``, {``'name'``: ``'Alice'``, ``'age'``: ``30``}), ``(``'2'``, {``'name'``: ``'Bob'``, ``'age'``: ``25``}), ``(``3``, {``'name'``: ``'Charlie'``}), ``(``4``, {}) ``] ``for user_id, info ``in test_users: ``print``(f``"\n测试用户ID: {user_id}, 信息: {info}"``) ``print_user_info(user_id, ``*``*``info) def describe_shape(shape_name,color``=``'black'``,``*``*``kwargs): ``""" ``该函数接收形状名称、颜色和其他可选的关键字参数,并打印形状描述。 ``""" ``print``(f``"\n尝试描述形状"``) ``try``: ``if not isinstance``(shape_name, ``str``): ``raise TypeError(``"形状名称必须是一个字符串。"``) ``print``(f``"形状名称: {shape_name}"``) ``print``(f``"颜色: {color}"``) ``for key, value ``in kwargs.items(): ``print``(f``"{key}: {value}"``) ``except TypeError as te: ``print``(te) ``except Exception as e: ``print``(f``"发生了一个错误: {e}"``) ``else``: ``print``(``"形状描述打印成功。"``) # 测试函数 if __name__ ``=``= "__main__"``: ``# 测试用例 ``test_shapes ``= [ ``(``'Circle'``, ``'red'``, {``'radius'``: ``5``}), ``(``'Rectangle'``, ``'blue'``, {``'length'``: ``10``, ``'width'``: ``5``}), ``(``123``, ``'green'``, {``'side'``: ``4``}), ``(``'Triangle'``, ``'yellow'``) ``] ``for item ``in test_shapes: ``if len``(item) >``= 3``: ``shape_name, color, info ``= item ``print``(f``"\n测试形状名称: {shape_name}, 颜色: {color}, 信息: {info}"``) ``describe_shape(shape_name, color``=``color,``*``*``info) ``elif len``(item) ``=``= 2``: ``shape_name, color ``= item ``info ``= {} ``print``(f``"\n测试形状名称: {shape_name}, 颜色: {color}, 信息: {info}"``) ``describe_shape(shape_name, color``=``color,``*``*``info) ``else``: ``raise ValueError(f``"输入信息过少!当前元组:{item},至少需要形状名称+颜色两项"``) |

装饰器:

|-------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | def logger(func): ``# 包装函数,接收任意参数 ``def wrapper(``*``args, ``*``*``kwargs): ``print``(f``"【日志】准备执行函数:{func.__name__}"``) ``# 执行原始函数,拿到返回结果 ``result ``= func(``*``args, ``*``*``kwargs) ``print``(f``"【日志】函数执行完毕:{func.__name__}"``) ``return result ``return wrapper # 测试 @logger def add(a, b): ``return a ``+ b @logger def hello(): ``print``(``"hello world"``) # 调用测试 print``(add(``3``,``5``)) hello() |

相关推荐
2601_962885723 分钟前
从 baostock 迁移到 AlphaFeed:接口对照与代码迁移指南
python
AI情绪识别开源30 分钟前
检信ALLEMOTION 标定治理与信号质量闸门 · 老年无感认知评估分析器
python
七夜zippoe36 分钟前
启元 Q1 腿部运动学逆解:Python 算站立下蹲关节角
开发语言·python·ai·机器人·腿部运动学
第404号工位44 分钟前
插上充电宝真能偷光相册?我拆解了一台改装充电宝,实测“恶意充电”的真实攻击链
linux·python·架构
技术卷1 小时前
Windows 下自定义 MCP 踩坑:stdin 默认继承导致 CPython 启动阻塞
python·mcp·zcode
小oo呆1 小时前
【学习心得】Python多进程
python·操作系统
CodeGL1 小时前
9、Python基础之IO编程
开发语言·数据库·python
HySpark1 小时前
ERes2Net声纹识别短音频匹配不稳定:从音频时长到有效音素的排查实践
python·语音识别·声纹识别·vad·eres2net
TomEval1 小时前
【测AI】第17篇:大模型评测方法论 —— LLM 怎么测?
人工智能·python·aigc·测试用例
fanruitian1 小时前
python 进程 线程
java·前端·python