🔒 答案已锁定

📖 答案解析 — 数字守艺人(非遗文化) — 简单3

算法应用主题赛 · Python · 共 14 题(5单选+5多选+4编程)· 满分 100 分

第 1 题 单选题 2 分
非遗数据库保存了许多技艺名称。执行以下代码,输出结果是什么?
text = "剪纸皮影戏泥塑蜡染年画"
pos = text.find("泥塑")
print(pos)
A. 4
B. 5
C. 6
D. -1
✅ 正确答案:B
💡 考点解析:字符串 find() 方法——返回子串首次出现的索引位置(从0开始)。"剪纸皮影戏泥塑蜡染年画" 中 "泥塑" 起始索引为5。"剪"(0)"纸"(1)"皮"(2)"影"(3)"戏"(4)"泥"(5)
第 2 题 单选题 2 分
二十四节气小程序中,小明写了以下代码来判断节气类型。该代码能否正常运行?
month = 6
if month >= 3 and month <= 5:
print("春季")
else:
print("非春季")
A. 能正常运行,输出"春季"
B. 能正常运行,输出"非春季"
C. 不能运行,因为缺少冒号
D. 不能运行,因为 print 语句缩进不正确
✅ 正确答案:D
💡 考点解析:Python缩进规则——if 语句后的代码块必须缩进(通常缩进4个空格),未缩进的 print 会导致 IndentationError
第 3 题 单选题 2 分
书法爱好者在整理字帖列表时,想删除"临摹本"这个条目。以下代码中,横线处应填什么?
copybooks = ["兰亭序", "祭侄稿", "临摹本", "寒食帖", "蜀素帖"]
copybooks._______("临摹本")
print(copybooks)
A. delete
B. pop
C. remove
D. del
✅ 正确答案:C
💡 考点解析:列表删除元素——remove(元素值) 按值删除第一个匹配元素;pop() 按索引删除;列表没有 delete() 方法;del 是关键字而非方法
第 4 题 单选题 2 分
京剧脸谱的颜色代码存储在一个元组中。执行以下代码,会发生什么?
colors = ("红", "黑", "白", "蓝", "黄")
colors[2] = "绿"
print(colors)
A. 输出 ("红", "黑", "绿", "蓝", "黄")
B. 输出 ("红", "黑", "白", "蓝", "黄")
C. 输出 ("红", "黑", "白", "蓝", "黄", "绿")
D. 报错:TypeError
✅ 正确答案:D
💡 考点解析:元组(tuple)是不可变类型,创建后不能修改其中的元素。尝试修改会引发 TypeError
第 5 题 单选题 2 分
木雕艺人在不同月份雕刻不同主题的作品。执行以下代码,循环执行了多少次?
for month in range(3, 9):
    print(f"第{month}个月完成木雕作品")
A. 5次
B. 6次
C. 7次
D. 9次
✅ 正确答案:B
💡 考点解析:range(start, stop)——range(3, 9) 生成的数字为 3, 4, 5, 6, 7, 8,共6个数字(不包含9)
第 6 题 多选题 4 分
关于Python字符串方法,以下哪些描述是正确的?(多选)
A. "年画剪纸皮影".count("影") 的结果是 1
B. "青花瓷".replace("青", "白") 的结果是 "白花瓷"
C. "12345".isdigit() 的结果是 True
D. "Hello世界".isalpha() 的结果是 True
✅ 正确答案:ABCD
💡 考点解析:字符串方法——count() 统计子串出现次数(A对);replace() 替换子串(B对);isdigit() 判断是否全部为数字字符(C对);isalpha() 判断是否全部为字母(含中文汉字),中英文混合字母也算(D对)
第 7 题 多选题 4 分
关于Python列表的索引和切片,以下哪些结果是正确的?(多选)
crafts = ["剪纸", "皮影", "泥塑", "蜡染", "年画", "风筝"]
A. crafts[0] 的结果是 "剪纸"
B. crafts[-1] 的结果是 "风筝"
C. crafts[1:4] 的结果是 ["皮影", "泥塑", "蜡染"]
D. crafts[::2] 的结果是 ["剪纸", "泥塑", "年画"]
✅ 正确答案:ABCD
💡 考点解析:列表索引和切片——正索引从0开始(A对);-1 表示最后一个元素(B对);[1:4] 包含索引1到3(不含4)(C对);[::2] 每隔2个取一个(D对)
第 8 题 多选题 4 分
关于Python中random模块的常用函数,以下哪些描述是正确的?(多选)
Actually,让我仔细检查uniform。文档说: random.uniform(a, b) - Return a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a. 所以C是对的。
A. random.randint(1, 10) 返回1到10之间(包含1和10)的一个随机整数
B. random.choice(["剪纸", "皮影", "泥塑"]) 从列表中随机选取一个元素
C. random.uniform(1, 10) 返回1到10之间(包含1和10)的一个随机浮点数
D. random.shuffle(["A", "B", "C"]) 原地随机打乱列表顺序,返回打乱后的新列表
✅ 正确答案:ABC
💡 考点解析:random模块——randint(a,b) 返回[a,b]范围内的随机整数(A对);choice(seq) 从序列中随机选取一个元素(B对);uniform(a,b) 返回[a,b]范围内的随机浮点数(C对);shuffle() 原地修改列表,返回 None 而非新列表(D错)
第 9 题 多选题 4 分
关于Python中布尔值和 bool() 转换,以下哪些说法是正确的?(多选)
A. bool(0) 的结果是 False
B. bool("") 的结果是 False
C. bool("非遗") 的结果是 True
D. bool([]) 的结果是 True
✅ 正确答案:ABC
💡 考点解析:布尔值与 bool() 转换——0(数值零)转为 False(A对);空字符串 "" 转为 False(B对);非空字符串转为 True(C对);空列表 [] 转为 False,而非 True(D错)
第 10 题 多选题 4 分
关于Python中的 input() 函数和类型转换,以下哪些描述是正确的?(多选)
A. input() 函数从键盘读取用户输入,返回的是字符串类型
B. int(input()) 可以将用户输入的内容转换为整数,输入"123"时会成功
C. float(input()) 可以将用户输入的内容转换为浮点数,输入"3.14"时会成功
D. int(input()) 在任何情况下都不会报错
✅ 正确答案:ABC
💡 考点解析:input() 和类型转换——input() 返回字符串(A对);int() 可以将数字字符串转整数(B对);float() 可以转浮点数(C对);如果用户输入的不是数字(如输入"abc"),int(input()) 会抛出 ValueError(D错)
第 11 题 编程操作题 15 分

题目描述:
茶艺是中国传统文化的瑰宝,不同种类的茶叶需要用不同温度的水冲泡。请编写程序,输入一种茶叶名称,输出对应的建议水温和冲泡要点。已知茶叶对照表如下:
| 茶叶 | 建议水温 | 冲泡要点 |
|------|---------|---------|
| 绿茶 | 80°C | 不宜闷泡,快速出汤 |
| 红茶 | 90°C | 可用沸水,闷泡3~5分钟 |
| 乌龙茶 | 95°C | 沸水冲泡,讲究"功夫" |
| 普洱茶 | 100°C | 沸水冲泡,可多次续水 |
如果输入的茶叶不在上表中,输出 "暂无该茶叶的建议"。

输入格式:

输出格式:
- 如果找到建议:第一行输出 {茶名}建议水温:{温度},第二行输出 冲泡要点:{要点}
- 如果未找到:输出 暂无该茶叶的建议
示例输入1:
绿茶
示例输出1:
绿茶建议水温:80°C
冲泡要点:不宜闷泡,快速出汤
示例输入2:
花茶
示例输出2:
暂无该茶叶的建议

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
# 读取茶叶名称
tea = input().strip()
# 根据茶叶名称输出建议
if tea == "绿茶":
    print(f"{tea}建议水温:80°C")
    print("冲泡要点:不宜闷泡,快速出汤")
elif tea == "红茶":
    print(f"{tea}建议水温:90°C")
    print("冲泡要点:可用沸水,闷泡3~5分钟")
elif tea == "乌龙茶":
    print(f"{tea}建议水温:95°C")
    print("冲泡要点:沸水冲泡,讲究\"功夫\"")
elif tea == "普洱茶":
    print(f"{tea}建议水温:100°C")
    print("冲泡要点:沸水冲泡,可多次续水")
else:
    print("暂无该茶叶的建议")
第 12 题 编程操作题 15 分

题目描述:
某非遗文化展览活动中,观众对不同项目的人气投票结果已记录在一个列表中。请编写程序完成以下操作:
1. 将项目列表按字母升序排序
2. 将排序后的列表反转(即变为降序排列)
3. 输出最终的前3个项目

输入格式:
- 第一行:一个整数 n(3 <= n <= 20),表示项目数量
- 第二行:n 个非遗项目名称,空格分隔

输出格式:
- 第一行:排序反转后的完整列表:{列表}
- 第二行:人气前三:{项目1} {项目2} {项目3}

示例输入:

6
剪纸 皮影戏 泥塑 蜡染 年画 风筝

示例输出:

排序反转后的完整列表:['风筝', '年画', '泥塑', '蜡染', '皮影戏', '剪纸']
人气前三:风筝 年画 泥塑
备注:Python中字符串按首字拼音字母的Unicode码排序,示例输出以实际运行结果为准
✅ 参考答案:
📖 参考代码
# 读取项目数量
n = int(input())
# 读取项目列表
items = input().split()
# 先升序排序
items.sort()
# 再反转(变为降序)
items.reverse()
# 输出完整列表
print(f"排序反转后的完整列表:{items}")
# 输出前三个
print(f"人气前三:{items[0]} {items[1]} {items[2]}")
第 13 题 编程操作题 20 分

题目描述:
某学校非遗社团按类别整理了非遗项目,数据以字典形式存储。请编写程序,输入一个类别名称,输出该类别下包含的所有非遗项目名称和项目总数。如果输入的类别不存在,输出 "未找到该类别"。
已知数据如下:
| 类别 | 非遗项目 |
|------|---------|
| 传统美术 | 剪纸、年画、刺绣、泥塑 |
| 传统戏剧 | 京剧、皮影戏、昆曲、木偶戏 |
| 传统技艺 | 陶瓷、蜡染、风筝、木雕 |
| 传统音乐 | 古琴、唢呐、琵琶、二胡 |

输入格式:

输出格式:
- 如果找到该类别:第一行输出 {类别}包括:{项目1} {项目2} ...,第二行输出 共{数量}个项目
- 如果未找到:输出 未找到该类别
示例输入1:
传统美术
示例输出1:
传统美术包括:剪纸 年画 刺绣 泥塑
共4个项目
示例输入2:
传统医药
示例输出2:
未找到该类别

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
# 预设非遗分类数据
data = {
    "传统美术": ["剪纸", "年画", "刺绣", "泥塑"],
    "传统戏剧": ["京剧", "皮影戏", "昆曲", "木偶戏"],
    "传统技艺": ["陶瓷", "蜡染", "风筝", "木雕"],
    "传统音乐": ["古琴", "唢呐", "琵琶", "二胡"]
}
# 读取类别名称
category = input().strip()
# 查找并输出
if category in data:
    items = data[category]
    print(f"{category}包括:{' '.join(items)}")
    print(f"共{len(items)}个项目")
else:
    print("未找到该类别")
第 14 题 编程操作题 20 分

题目描述:
年画是中国传统民间艺术,过年时家家户户张贴年画以增添喜庆气氛。某年画作坊提供定制服务,收费规则如下:
- 小幅年画(边长 <= 30cm):每幅成本价 15 元
- 中幅年画(边长 31~60cm):每幅成本价 30 元
- 大幅年画(边长 > 60cm):每幅成本价 50 元
- 如果订购数量 >= 10幅,总价打9折(乘以0.9)
请编写程序,输入年画的边长(整数,cm)和订购数量(整数),计算并输出总费用,保留1位小数。

输入格式:

输出格式:
示例输入1:
25 5
示例输出1:
总费用:75.0元
样例1说明:边长25cm(小幅),单价15元,5幅共75元,不足10幅不打折。
示例输入2:
45 12
示例输出2:
总费用:324.0元
样例2说明:边长45cm(中幅),单价30元,12幅。原价30×12=360元,满10幅打9折,360×0.9=324.0元。
示例输入3:
80 8
示例输出3:
总费用:400.0元
样例3说明:边长80cm(大幅),单价50元,8幅共400元,不足10幅不打折。

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
# 读取边长和数量
size, count = map(int, input().split())
# 根据边长判断单价
if size <= 30:
    price = 15
elif size <= 60:
    price = 30
else:
    price = 50
# 计算原价
total = price * count
# 满10幅打9折
if count >= 10:
    total = total * 0.9
# 输出结果(保留1位小数)
print(f"总费用:{total:.1f}元")