Files

105 lines
4.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第 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. 是否理解集合去重可能打乱原列表顺序。