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

算法应用主题赛 — 智传民韵(民族文化)
难度:中等 | 时长:90 分钟 | 满分:100分
题型:5单选(10分) + 5多选(20分) + 4编程(70分)

算法应用主题赛 — 智传民韵(民族文化)(中等)
考生:— 第 1 / 14 题
--:--
第 1 题 单选题 2 分
维吾尔族十二木卡姆是著名的大型古典音乐套曲。以下代码用列表推导式筛选出名称长度不少于3个字的木卡姆调式,输出结果中元素的个数是?
modes = ["拉克", "且比亚特", "木夏吾莱克", "恰尔尕", "潘吉尕",
         "乌孜哈勒", "艾介姆", "乌夏克", "巴雅特", "纳瓦", "西尕", "依拉克"]
result = [m for m in modes if len(m) >= 3]
print(len(result))
第 2 题 单选题 2 分
壮族壮锦和苗族刺绣共享了一些传统纹样图案。以下代码中,集合操作的结果是?
zhuang = {"回纹", "云雷纹", "菱形纹", "水波纹"}
miao = {"蝴蝶纹", "云雷纹", "鱼纹", "回纹"}
common = zhuang & miao
print(common)
第 3 题 单选题 2 分
侗族鼓楼是侗寨的标志性建筑。以下代码定义了一个返回鼓楼信息的函数,输出结果是?
def drum_tower():
    name = "增冲鼓楼"
    floors = 13
    height = 25
    return name, floors, height
info = drum_tower()
print(info[1])
第 4 题 单选题 2 分
土家族摆手舞的数学建模中需要计算平方根。以下代码的输出结果是?
from math import sqrt as sq
print(sq(25))
第 5 题 单选题 2 分
蒙古族传统文字使用回鹘式蒙古文。以下代码利用字符编码函数进行字母变换,输出结果是?
print(chr(ord('A') + 2))
第 6 题 多选题 4 分
以下列表存储了维吾尔族几种传统舞蹈的名称。关于列表的常用方法,以下哪些说法是正确的?
dances = ["赛乃姆", "刀郎舞", "萨玛舞", "纳孜尔库姆", "赛乃姆"]
第 7 题 多选题 4 分
定义一个记录民族节日信息的函数,以下关于函数参数的说法,哪些是正确的?
def festival(name, month, *activities, **details):
    pass
第 8 题 多选题 4 分
集合A和集合B分别存储了两组民族乐器的名称。以下关于集合运算的说法,哪些是正确的?
A = {"芦笙", "铜鼓", "马头琴", "琵琶"}
B = {"琵琶", "古筝", "铜鼓", "二胡"}
第 9 题 多选题 4 分
在验证民族工艺品编号的程序中,需要用到字符串的判断方法。以下关于字符串判断方法的说法,哪些是正确的?
s1 = "苗绣图案"
s2 = "MiaoXiu2024"
第 10 题 多选题 4 分
以下二维列表中,每行记录了一个省区名称、主要民族和人口数量(万人)。关于二维列表的基本操作,以下哪些说法是正确的?
data = [
    ["广西", "壮族", 1692],
    ["湖南", "苗族", 202],
    ["贵州", "苗族", 397],
    ["西藏", "藏族", 628]
]
第 11 题 编程操作题 0 分

题目描述:
维吾尔族十二木卡姆是享誉世界的非物质文化遗产。每部木卡姆套曲有名称和总演奏时长(分钟)。请编写程序,输入n部木卡姆的信息,按照以下规则排序后输出:
1. 按演奏时长从长到短(降序)排列
2. 若演奏时长相同,则按名称的字符串默认顺序(升序)排列

输入格式:
第一行输入一个整数n(1 ≤ n ≤ 100),表示木卡姆的数量。
接下来n行,每行输入一个字符串和一个整数,格式为"名称,时长",中间用英文逗号分隔。时长范围为1~300。

输出格式:
输出n行,每行格式为"名称:时长分钟",按排序规则排列。

示例输入:

4
拉克木卡姆,120
且比亚特木卡姆,90
木夏吾莱克木卡姆,150
恰尔尕木卡姆,90

示例输出:

木夏吾莱克木卡姆:150分钟
拉克木卡姆:120分钟
且比亚特木卡姆:90分钟
恰尔尕木卡姆:90分钟
说明:木夏吾莱克木卡姆时长150最长排第一;拉克木卡姆时长120排第二;且比亚特和恰尔尕时长相同(90),按名称升序,"且比亚特"的拼音首字母'Q'在"恰尔尕"的拼音首字母'Q'... 按字符串默认升序排列,"且比亚特木卡姆" < "恰尔尕木卡姆"。
第 12 题 编程操作题 0 分

题目描述:
藏族雪顿节是藏区重要的传统节日,起源于公元11世纪。假设雪顿节在每年公历的第d天举行(d从1开始计算,即1月1日是第1天)。给定一个整数d,请编写程序计算出雪顿节所在的公历月份和日期。
假设该年为非闰年:1月31天,2月28天,3月31天,4月30天,5月31天,6月30天,7月31天,8月31天,9月30天,10月31天,11月30天,12月31天。

输入格式:
输入一个整数d(1 ≤ d ≤ 365),表示一年中的第d天。

输出格式:
输出格式为"M月D日",其中M和D均为整数,不含前导零。
示例输入1:
45
示例输出1:
2月14日
说明:1月有31天,45 - 31 = 14,所以是2月14日。
示例输入2:
200
示例输出2:
7月19日
说明:1月(31)→2月(28)→3月(31)→4月(30)→5月(31)→6月(30) = 181天,200-181=19,所以是7月19日。

示例输入:

示例输出:

第 13 题 编程操作题 0 分

题目描述:
某苗族银饰博物馆将藏品信息保存在文本文件 silverware.txt 中,每行记录一件藏品的编号、名称、类型和重量(克),格式为"藏品编号,名称,类型,重量"。请编写程序完成以下功能:
1. 读取文件中的所有银饰藏品信息
2. 输入一个银饰类型(如"头饰"或"项圈"或"手镯"),筛选出该类型的所有藏品
3. 按照重量从大到小排序输出藏品信息
4. 计算并输出该类型藏品的总重量
5. 若该类型不存在任何藏品,输出"未找到该类型的藏品"
6. 若文件不存在,输出"文件读取失败"

输入格式:
第一行输入文件名(如 silverware.txt)。
第二行输入要查询的银饰类型(字符串)。
silverware.txt 文件示例内容:
M001,银角头饰,头饰,350
M002,银项圈,项圈,280
M003,银手镯,手镯,120
M004,银梳,头饰,85
M005,银耳环,耳饰,30
M006,银压领,项圈,200
M007,银发簪,头饰,45

输出格式:
第一行输出"X类藏品:"(X为查询的类型)。
接下来每行输出一件藏品的信息,格式为"名称 重量克"(名称和重量之间用空格分隔),按重量从大到小排列。
最后输出"总重量:Y克"(Y为总重量)。
若该类型不存在,则输出"未找到该类型的藏品"。

示例输入:

silverware.txt
头饰

示例输出:

头饰类藏品:
银角头饰 350克
银梳 85克
银发簪 45克
总重量:480克
第 14 题 编程操作题 0 分

题目描述:
中华民族乐器数据库中,每件乐器有一个统一编码,格式为:民族代码-类别号-序号。编码规则如下:
- 民族代码:2位大写英文字母(如 MG 表示蒙古族、ZG 表示藏族、ZW 表示壮族、MZ 表示苗族)
- 类别号:1位数字(1表示弦鸣乐器、2表示气鸣乐器、3表示体鸣乐器、4表示膜鸣乐器)
- 序号:3位或4位数字
例如,MG-1-015 表示蒙古族弦鸣乐器,序号为015;ZW-3-1024 表示壮族体鸣乐器,序号为1024。
请编写程序,输入一个乐器编码字符串,验证其是否符合上述格式要求,并输出验证结果。
验证规则:
1. 总长度必须为8或9个字符(含两个连字符)
2. 前2个字符必须全部是大写英文字母
3. 第3个字符必须是连字符 -
4. 第4个字符必须是数字 1、2、3 或 4
5. 第5个字符必须是连字符 -
6. 剩余部分(第6个字符到末尾)必须是3位或4位纯数字

输入格式:
输入一行字符串,表示待验证的乐器编码。

输出格式:
若编码合法,输出"编码合法"。
若编码不合法,输出"编码不合法"。
示例输入1:
MG-1-015
示例输出1:
编码合法
示例输入2:
abc-1-xyz
示例输出2:
编码不合法
示例输入3:
ZW-3-1024
示例输出3:
编码合法
示例输入4:
MZ-5-001
示例输出4:
编码不合法
说明:示例4中类别号为5,不在1-4范围内,因此不合法。

示例输入:

示例输出: