🏆 全国青少年信息素养大赛

算法应用主题赛 — 数字守艺人(非遗文化)
难度:中等 | 时长:90 分钟 | 满分:100分
题型:5单选(10分) + 5多选(20分) + 4编程(70分)

算法应用主题赛 — 数字守艺人(非遗文化)(中等)
考生:— 第 1 / 14 题
--:--
第 1 题 单选题 2 分
中医馆的陈师傅要将药材清单用顿号连接起来。以下代码中,横线处应填什么才能正确完成拼接?
herbs = ["人参", "当归", "枸杞", "黄芪"]
result = "、".______(herbs)
print(result)
第 2 题 单选题 2 分
非遗项目数据管理中,常用字典的 pop() 方法移除并获取某个键的值。执行以下代码,输出结果是什么?
info = {"name": "青花瓷", "level": "国家级", "year": 2006}
removed = info.pop("year", "未知")
print(removed)
print(info)
第 3 题 单选题 2 分
刺绣工艺数据以元组形式存储。执行以下代码,输出结果是什么?
record = ("苏绣", 2500, "国家级")
name, history, level = record
print(f"{name}已有{history}年历史")
第 4 题 单选题 2 分
古琴制作工序需要同时获取序号和名称。以下代码中,横线处应填什么?
steps = ["选材", "开料", "挖槽", "合琴", "髹漆"]
for idx, step in ______(steps):
    print(f"第{idx+1}步:{step}")
第 5 题 单选题 2 分
蜡染数据需要从文件中逐行读取处理,要求文件使用完毕后自动关闭。以下哪个写法最为安全和简洁?
第 6 题 多选题 4 分
关于Python中元组(tuple)的特性,以下哪些描述是正确的?(多选)
第 7 题 多选题 4 分
关于Python中的 for-else 和 while-else 结构,以下哪些描述是正确的?(多选)
第 8 题 多选题 4 分
关于Python列表的高级操作,以下哪些描述是正确的?(多选)
第 9 题 多选题 4 分
关于Python字典的高级方法和操作,以下哪些描述是正确的?(多选)
第 10 题 多选题 4 分
关于Python异常处理的深入用法,以下哪些描述是正确的?(多选)
第 11 题 编程操作题 0 分

题目描述:
陶瓷烧制是重要的非物质文化遗产。烧制过程需要严格控制窑温。请编写程序,使用模拟算法模拟连续 n 小时的窑温变化。
模拟规则如下:
- 初始温度由用户输入(单位:摄氏度)
- 每小时温度变化:
- 当前温度 < 800:升温50度
- 当前温度在 800~1100(含边界):升温20度
- 当前温度在 1101~1200(含边界):升温10度
- 当前温度 > 1200:降温30度
- 输出每小时的温度,并统计异常(<800 或 >1200)的小时数

输入格式:

输出格式:
- 每小时一行:第{i}小时:{温度}°C(i从1开始)
- 最后一行:异常小时数:{数量}
示例输入1:
6 780
示例输出1:
第1小时:780°C
第2小时:830°C
第3小时:850°C
第4小时:870°C
第5小时:890°C
第6小时:910°C
异常小时数:1
样例1说明:初始第1小时780(异常),第2小时升温至830,之后每次升温20,后续均在正常范围。注意:应先判断当前小时温度是否异常,再根据规则更新下一小时温度。
示例输入2:
5 1195
示例输出2:
第1小时:1195°C
第2小时:1205°C
第3小时:1175°C
第4小时:1185°C
第5小时:1195°C
异常小时数:1
样例2说明:1195正常→第1小时正常,更新温度1195+10=1205→第2小时1205(异常),更新温度1205-30=1175→第3小时1175正常→后续正常。异常1小时。

示例输入:

示例输出:

第 12 题 编程操作题 0 分

题目描述:
某非遗文化体验馆提供多种手工体验项目,每位游客需选择恰好 3 个不同的项目。请编写程序,使用枚举算法列举从给定项目中任选 3 个的所有组合方案。

输入格式:
- 第一行:一个整数 n(3 <= n <= 10),表示可选项目总数
- 第二行:n 个项目名称,空格分隔

输出格式:
- 第一行:共{方案数}种组合方案
- 接下来每行一种方案:方案{编号}:{项目1}、{项目2}、{项目3}

示例输入:

5
剪纸 泥塑 蜡染 风筝 年画

示例输出:

共10种组合方案
方案1:剪纸、泥塑、蜡染
方案2:剪纸、泥塑、风筝
方案3:剪纸、泥塑、年画
方案4:剪纸、蜡染、风筝
方案5:剪纸、蜡染、年画
方案6:剪纸、风筝、年画
方案7:泥塑、蜡染、风筝
方案8:泥塑、蜡染、年画
方案9:泥塑、风筝、年画
方案10:蜡染、风筝、年画
算法提示:使用三重嵌套 for 循环,且保证 i < j < k,即可不重不漏地枚举所有三项目组合。
第 13 题 编程操作题 0 分

题目描述:
某非遗数据库导出了一份项目数据文件 heritage_data.txt,但文件中存在一些问题需要清洗。请编写程序读取该文件,完成数据清洗并输出清洗报告。
文件中每行一个非遗项目,格式为 项目编号,项目名称,类别,入选年份。需要处理的异常情况:
1. 格式异常:空行或分割后字段数不足4的行,跳过并记录
2. 编号异常:项目编号不是纯数字,跳过并记录
3. 年份异常:入选年份不在 2000~2024(含边界)范围内,跳过并记录
4. 重复编号:项目编号重复出现,第一次保留,后续跳过并记录

输入格式:

输出格式:
- 第一行:清洗完成,有效记录:{数量}条
- 第二行:跳过记录:{总数}条(格式异常:{d} 编号异常:{a} 年份异常:{b} 重复编号:{c})
- 接下来按编号升序每行输出:[{编号}] {名称}({类别},{年份}年入选)
示例文件内容(heritage_data.txt):
001,蔚县剪纸,传统美术,2006
002,苏绣,传统美术,2006
003,景德镇陶瓷,传统技艺,2006
abc,无效数据,未知,2000
004,昆曲,传统戏剧,2001
005,古琴艺术,传统音乐,1998
001,重复记录,传统美术,2020

示例输入:

示例输出:

清洗完成,有效记录:4条
跳过记录:4条(格式异常:1 编号异常:1 年份异常:1 重复编号:1)
[001] 蔚县剪纸(传统美术,2006年入选)
[002] 苏绣(传统美术,2006年入选)
[003] 景德镇陶瓷(传统技艺,2006年入选)
[004] 昆曲(传统戏剧,2001年入选)
样例说明:
- 第3行(空行)→ 格式异常
- 第5行(abc,...)→ 编号异常(abc不是纯数字)
- 第7行(005,...1998)→ 年份异常(1998 < 2000)
- 第8行(001,...)→ 重复编号(001已出现)
第 14 题 编程操作题 0 分

题目描述:
某非遗保护中心需要管理各级非遗传承人信息。请编写程序,使用嵌套数据结构(列表中包含字典)来存储和管理传承人数据,并实现以下功能:
1. 输入 n 位传承人的信息(姓名、年龄、传承项目、级别),级别分为"国家级"、"省级"、"市级"
2. 统计各级别传承人的数量
3. 找出年龄最大的传承人(如果并列,输出最先输入的那位)
4. 按级别分组输出所有传承人(先国家级、再省级、最后市级,同级别内按年龄从大到小排列)

输入格式:
- 第一行:一个整数 n(1 <= n <= 50),表示传承人数量
- 接下来 n 行:每行格式为 姓名 年龄 传承项目 级别,空格分隔

输出格式:
- 第一部分:级别统计:国家级:{a}人 省级:{b}人 市级:{c}人
- 第二部分:最年长的传承人:{姓名},{年龄}岁,{传承项目}
- 第三部分:--- 按级别分组 ---,之后按级别输出,每组先输出 【{级别}】,再逐行输出该级别传承人信息,格式为 {姓名} {年龄}岁 {传承项目}

示例输入:

6
张师傅 72 蔚县剪纸 国家级
李老师 58 苏绣 省级
王艺人 65 景德镇陶瓷 国家级
赵师傅 45 皮影戏 市级
陈老师 60 蜡染 省级
刘师傅 70 年画 国家级

示例输出:

级别统计:国家级:3人 省级:2人 市级:1人
最年长的传承人:张师傅,72岁,蔚县剪纸
--- 按级别分组 ---
【国家级】
张师傅 72岁 蔚县剪纸
刘师傅 70岁 年画
王艺人 65岁 景德镇陶瓷
【省级】
陈老师 60岁 蜡染
李老师 58岁 苏绣
【市级】
赵师傅 45岁 皮影戏