feat(python基础): 完成第十一至十三课教学内容

This commit is contained in:
zhiye.sun
2026-08-03 14:22:36 +08:00
parent b5023b8e25
commit 298e5b46ea
11 changed files with 1862 additions and 29 deletions

View File

@@ -0,0 +1,104 @@
# 第 1-11 课课堂练习Agent 工具权限管理器
#
# 完成要求:
# 1. 根据注释完成集合的创建、成员判断、添加、删除、遍历和集合运算。
# 2. 使用有意义的英文蛇形变量名。
# 3. 不要依赖集合的显示顺序。
# 4. 删除可能不存在的元素时使用 discard(),或先使用 in 判断。
# 5. 不要删除题目注释。
# 6. 完成后运行本文件并核对预期结果。
# 练习一:创建集合 agent_tools包含以下工具
# "搜索"、"计算"、"写作"、"搜索"。
# 输出集合和元素数量,观察重复的“搜索”是否只保留一份。
# 练习二:创建空集合 disabled_tools。
# 输出它的值和类型,确认类型是 set而不是 dict。
# 练习三:完成成员判断:
# 1. 判断 agent_tools 中是否存在“搜索”,保存到 can_search
# 2. 判断 agent_tools 中是否不存在“图片生成”,保存到 cannot_generate_image
# 3. 输出两个判断结果。
# 练习四:使用 add() 向 agent_tools 添加“代码执行”。
# 再次使用 add() 添加已经存在的“搜索”。
# 输出添加后的集合和元素数量,确认没有产生重复元素。
# 练习五:使用 update() 一次添加“图片生成”和“网页浏览”。
# 传给 update() 的数据可以使用列表。
# 输出更新后的集合。
# 练习六:完成安全删除:
# 1. 使用 remove() 删除确定存在的“网页浏览”;
# 2. 使用 discard() 删除不存在的“语音识别”;
# 3. 输出删除后的集合,确认程序没有报错。
# 练习七:使用 for 遍历 agent_tools。
# 为了让输出顺序稳定,请遍历 sorted(agent_tools)。
# 每行按照“可用工具:搜索”的格式输出。
# 练习八:创建两个集合:
# code_agent_tools = {"搜索", "计算", "代码执行"}
# writer_agent_tools = {"搜索", "写作", "图片生成"}
# 计算并输出:
# 1. 交集 common_tools
# 2. 并集 all_tools
# 3. 代码助手独有的差集 code_only_tools
# 4. 对称差集 different_tools。
# 练习九:创建以下两个集合:
# required_tools = {"搜索", "计算"}
# available_tools = {"搜索", "计算", "写作"}
# 使用 <= 判断 required_tools 是否是 available_tools 的子集,
# 将结果保存到 has_required_tools 并输出。
# 练习十:为模型使用记录去重:
# model_history = ["gpt-5", "o3", "gpt-5", "o3", "gpt-5-mini"]
# 将列表转换成集合 unique_models 并输出;
# 再把集合转换成列表 unique_model_list 并输出。
# 注意:转换后的顺序可能与原列表不同。
# 练习十一:创建集合 current_permissions
# {"读取配置", "修改配置", "执行任务"}
# 再创建集合 revoked_permissions
# {"修改配置", "删除配置"}
# 使用差集得到 remaining_permissions
# 表示撤销相关权限后仍然保留的权限,并输出结果。
# 预期核心结果:
# agent_tools 中重复的“搜索”只保留一份;
# disabled_tools 的类型是 set
# can_search = True
# cannot_generate_image = True
# 重复执行 add("搜索") 不会增加元素数量;
# discard() 删除不存在的元素时不会报错;
# common_tools = {"搜索"}
# all_tools 包含两组 Agent 的全部工具;
# code_only_tools = {"计算", "代码执行"}
# different_tools 不包含共同拥有的“搜索”;
# has_required_tools = True
# unique_models 只有三个元素;
# remaining_permissions = {"读取配置", "执行任务"}。
# 完成后进行自查:
# 1. 空集合是否使用 set() 创建;
# 2. 是否理解集合会自动去除重复元素;
# 3. add() 和 update() 是否按要求分别使用;
# 4. 删除不存在的元素时是否避免了 KeyError
# 5. 遍历时是否没有依赖集合自身的顺序;
# 6. 是否能区分交集、并集、差集和对称差集;
# 7. 是否理解差集运算的左右方向;
# 8. 是否能使用子集判断检查权限;
# 9. 是否理解集合去重可能打乱原列表顺序。