当前位置:首页>python>2026年全国信息素养⼤赛Python算法应⽤(星⽕征途)华南赛区⼩⾼组复赛+答案解析

2026年全国信息素养⼤赛Python算法应⽤(星⽕征途)华南赛区⼩⾼组复赛+答案解析

  • 2026-08-28 15:03:29
2026年全国信息素养⼤赛Python算法应⽤(星⽕征途)华南赛区⼩⾼组复赛+答案解析
如对您有帮助,请帮忙点赞👍、点爱心❤️、转发,万分感谢🌹
【题库精选】2026信息素养决赛集训题 84套 & CSP-J/S 初赛近10年真题+模拟卷
🐍 Python 小高组 · 复赛
2026 全国青少年信息素养大赛Python 算法应用 · 互动题库
点击选项看答案,绿色正确 · 红色错误
💡 先独立思考,再点击选项核对答案。单选题只有 1 个正确;多选题可能多个正确。答案与解析见文末。
第 1 题
单选题
红军电报员要将字符串"120"转换为整数以便计算, 应该使用以下哪项代码?

A、str("120")

B、int("120")

C、float("120")

D、bool("120")

第 2 题
单选题
侦察排长判断是否发起进攻: 当"敌军人数少于 50 人"和"我方弹药充足 "两个条件中至少满足一项时, 才可考虑行动 。已知 enemy = 45, ammo_sufficient = False, 以下哪个表达式的结果为 True?

A、enemy < 50 and ammo_sufficient

B、enemy < 50 or ammo_sufficient

C、enemy > 50 or ammo_sufficient

D、not enemy < 50 and ammo_sufficient

第 3 题
单选题
尖刀班名单为 squad = ['李云龙', '赵刚', '魏和尚', '段鹏'] 。若魏和尚不幸牺牲, 需要将其从名单中移除, 应该使用以下哪项操作?

A、squad.delete('魏和尚')

B、squad.pop(3)

C、squad.remove('魏和尚')

D、squad.drop('魏和尚')

第 4 题
单选题
炊事班需要连续 5 天记录粮食消耗 。使用如下循环, print(i) 将依次输出什么?
for i in range(5):    print(i)

A、1 2 3 4 5

B、0 1 2 3 4

C、0 1 2 3 4 5

D、1 2 3 4

第 5 题
单选题
红军后勤处定义了一个函数, 用于计算分发弹药后剩余的子弹数 。执行以下代码后, 输出的结果是什么?
def distribute(ammo, teams):    ammo = ammo - teams * 10    return ammototal = 100used = distribute(total, 3)print(used)

A、70

B、100

C、30

D、0

第 6 题
多选题 · 可多选
红军电报员需要将情报内容格式化输出 。已知变量 place = '延安' ,time = 5, 以下能正确输出"出发地:延安, 预计到达时间:5天"的语句有?

A、print("出发地: %s, 预计到达时间: %d天" % (place, time))

B、print("出发地: " + place + ", 预计到达时间: " + str(time) + "天")

C、print("出发地:{}, 预计到达时间:{}天".format(place, time))

D、print("出发地:place, 预计到达时间:time天")

第 7 题
多选题 · 可多选
红军侦察兵名单用列表存储:squad = ['张班长 ', '李战士 ', '王战士 ', '赵战士'] 。关于此列表的操作, 以下说法正确的有?

A、squad[1] 可以获取第二个元素"李战士 "

B、len(squad) 的结果是 4

C、squad.append('孙战士') 会在列表末尾添加新元素

D、squad.remove('王战士') 执行后, 列表长度变为 3

第 8 题
多选题 · 可多选
红军侦察兵在搜索敌情时 ,使用循环遍历一个区域 。关于 break 和 continue 语句, 以下说法正确的有?

A、break 语句可以立即终止当前( 最内层) 循环

B、continue 语句可以跳过本次循环的剩余代码, 直接进入下一次循环

C、break 不可以在 while 循环中使用

D、continue 语句执行后, 循环会直接结束,不再进行后续迭代

第 9 题
多选题 · 可多选
后勤处用集合记录已发放物资的村庄编号:villages = {1, 3, 5, 7} 。关于集合的操作, 以下说法正确的有?

A、集合中的元素是无序的,且不能重复。

B、villages.add(3) 不会改变集合的内容。

C、villages.remove(2) 执行时不会报错, 虽然 2 不在集合中。

D、len(villages) 的结果是 4。

第 10 题
多选题 · 可多选
红军指挥员用递归思想计算行军路线数量 。关于递归函数, 以下说法正确的有?

A、递归调用时, 参数的值不能发生任何变化。

B、递归函数在每次调用时都会花费一定的时间。

C、递归函数在每次调用都会占用一定的内存空间。

D、递归函数必须包含一个或多个终止条件, 否则会无限递归。

📝 编程题参考解答
编程题 1
密码本索引计算
题目描述:】红军电报员使用一本密码本, 每页有 8 行, 每行只有 1 个密码 。密码编号从 1 开始连续编排( 第 1 页第1 行为编号 1, 第 1 页第 2 行为编号 2, 以此类推) 。请你编写程序, 输入密码所在的页数和行数, 输出该密码的编号。
输入描述:】分两行输入两个正整数:第一行输入页数 p 。第二行输入行数 r。
输出描述:】一行, 一个整数, 表示该密码的编号。
数据范围:】1 ≤ p ≤ 20, 1 ≤ r ≤ 8
【输入样例 1】:
34
【输出样例 1】:
20
【输入样例 2】:
18
【输出样例 2】:
8
【输入样例 3】:
21
【输出样例 3】:
9
参考代码:
p = int(input())r = int(input())print((p - 1) * 8 + r)
解析:】每页固定有 8 行, 因此前 p-1 页共有 (p-1)×8 个密码, 再加上当前页第 r 行即可得到密码编号, 即 (p- 1)×8+r。
编程题 2
接头暗号验证
题目描述:】地下交通站规定, 接头暗号必须同时满足以下两个条件才算有效:1. 暗号长度至少为 4 个字符。2. 暗号的第一个字符必须是字母 ( 大写或小写均可) 。请你编写程序, 输入一个暗号字符串, 判断其是否有效, 并输出"有效"或"无效"。
输入描述:】一行, 一个字符串 s, 字符串中不包含空格。
输出描述:】一行, 输出"有效"或"无效"。
数据范围:】1 ≤ s 的长度 ≤ 20
【输入样例 1】:
r123
【输出样例 1】:
有效
【输入样例 2】:
1abcd
【输出样例 2】:
无效
【输入样例 3】:
abc
【输出样例 3】:
无效
参考代码:
s = input()if len(s) >= 4 and s [0].isalpha():    print("有效")else:    print("无效")
解析:】判断暗号是否有效需要同时满足两个条件 。len(s) >= 4 用于判断字符串长度是否至少为 4;s[0].isalpha() 用于判断第一个字符是否为字母 。两个条件都满足时输出"有效", 否则输出"无效"。
编程题 3
军需物资采购
题目描述:】红军后勤部需要采购三种军需物资:子弹( 每箱30元) 、手榴弹( 每箱20元) 和医药包( 每箱50元) 。上级拨付了一定金额的经费, 并且运输队最多只能运输 T 箱物资 。要求:1. 经费必须正好花完,不能有剩余。2. 三种物资都必须至少采购 1 箱。3. 采购的总箱数不能超过 T 箱。请你编写程序, 输入经费总额和最多可运输箱数, 计算出一共有多少种不同的采购方案。
输入描述:】一行,两个正整数 money 和 T, 用空格分隔 。money 表示经费总额 ,T 表示最多可运输的箱数。
输出描述:】一行, 一个整数, 表示满足条件的采购方案总数。
数据范围:】1 ≤ money ≤ 5000, 3 ≤ T ≤ 500
【输入样例 1】:
100 10
【输出样例 1】:
1
【输入样例 2】:
200 7
【输出样例 2】:
3
【输入样例 3】:
80 10
【输出样例 3】:
0
参考代码:
money, limit = map(int, input().split())count = 0for bullet in range(1, money // 30 + 1):    for grenade in range(1, money // 20 + 1):        remaining = money - bullet * 30 - grenade * 20        if remaining <= 0 or remaining % 50 != 0:            continue        medicine = remaining // 50        if medicine >= 1 and bullet + grenade + medicine <= limit:            count += 1print(count)
解析:】使用三层循环分别枚举子弹 、手榴弹和医药包的购买数量 。每种物资数量必须至少为1, 因此循环从1开始 。计算三种物资总花费和总箱数, 如果总花费等于经费且箱数不超过运输限制 ,则方案数量加1 。最后输出满足条件的方案总数。
编程题 4
阵地火力薄弱点分析
题目描述:】红军侦察连绘制了一张 M × N 的阵地火力分布图, 用一个二维列表表示, 每个元素为该格点的火力值(整数) 。指挥部需要找出每一列中的火力薄弱点 。一个格点被称为"薄弱点", 必须满足:● 该格点的火力值是该列中的最小值;● 且该值小于 30。请你编写程序 ,依次输出每一列是否存在薄弱点 。如果某一列存在薄弱点, 输出该列的最小火力值;如果不存在, 输出 -1。
输入描述:】第一行:两个整数 M 和 N, 空格分隔, 表示阵地的行数和列数。接下来 M 行, 每行 N 个整数, 空格分隔, 表示各个格点的火力值。
输出描述:】共 N 行, 每行一个整数 。依次表示第 1 列 、第 2 列        第 N 列的薄弱点情况:存在薄弱点则输出该列最小火力值;不存在则输出 -1。
数据范围:】2 ≤ M, N ≤ 100, 0 ≤ 火力值 ≤ 1000
【输入样例 1】:
3 425 60 45 7030 55 80 3540 90 20 50
【输出样例 1】:
25-120-1
【输入样例 2】:
2 315 85 5070 40 95
【输出样例 2】:
15-1-1
【输入样例 3】:
3 330 40 5060 70 8090 95 100
【输出样例 3】:
-1-1-1
参考代码:
m, n = map(int, input().split())grid = [list(map(int, input().split())) for _ in range(m)]for column in range(n):    min_value = min(grid [row] [column] for row in range(m))    if min_value < 30:        print(min_value)    else:        print(-1)
解析:】先使用二维列表保存阵地火力值 。然后按列遍历, 每次找到该列的最小火力值 。如果最小值小于30, 说明该列存在火力薄弱点, 输出该值;否则输出-1 。该方法通过逐列查找完成统计, 时间复杂度为O(M×N)。
🔑 参考答案与解析
第 1 题 答案:B
Python 中 int() 函数用于将字符串或数字转换为整数类型 。str() 是转换为字符串 ,float() 是转换为浮点数, bool() 是转换为布尔值 。因此将字符串"120"转换为整数应使用 int("120")。
第 2 题 答案:B
题目要求两个条件中至少满足一个, 应该使用逻辑运算符 or 。已知 enemy = 45 ,所以 enemy < 50 为True;ammo_sufficient = False 。A 使用 and, 要求两个条件同时成立, 结果为 False; B 使用 or, 一个条件成立即可, 结果为 True;C 和 D 结果均不符合要求 。因此答案为 B。
第 3 题 答案:C
Python 列表删除指定元素可以使用 remove() 方法, 它会根据元素值删除对应内容 。pop() 根据索引删除元素, 本题中魏和尚索引为 2,不是 3;delete() 和 drop() 不是列表提供的删除方法 。因此答案为 C。
第 4 题 答案:B
Python 中 range(5) 表示生成从 0 开始 、到 5 之前结束的整数序列, 即 0 、1 、2 、3 、4, 共 5 个数字 。因此循环会依次输出 0 到 4, 答案为 B。
第 5 题 答案:A
函数 distribute() 中, 剩余弹药数量计算公式为 ammo - teams * 10 。调用函数时传入 ammo=100,teams=3, 计算结果为 100 - 3 * 10 = 70 。函数通过 return 返回 70, 并由 print() 输出, 因此答案为A。
第 6 题 答案:A、B、C
Python 中格式化字符串有多种方式 。A 使用 %s 和 %d 占位符, 可以将字符串和整数格式化输出; B使用字符串拼接, 需要将整数 time 转换为字符串 ,使用 str() 后可以正确输出;C 使用 format() 方法替换 {}  占位符, 也可以完成格式化输出; D 中直接写入变量名 place 和 time,不会读取变量值, 只会输出普通文本 。因此答案为 ABC。
第 7 题 答案:A、B、C、D
Python 列表索引从 0 开始, 因此 squad[1] 对应第二个元素"李战士 " ,A 正确 。列表中共有 4 个元素, len() 可以获取列表长度, 因此 B 正确 。append() 方法用于在列表末尾添加元素, 因此 C 正确。remove() 会删除指定元素, 删除"王战士 "后列表剩余 3 个元素, 因此 D 正确。
第 8 题 答案:A、B
break 可以立即结束当前所在的循环, 因此 A 正确 。continue 会跳过本次循环剩余代码, 进入下一次循环, 因此 B 正确 。break 可以用于 for 和 while 循环 ,所以 C 错误 。continue 不会结束整个循环, 只会跳过当前一次循环, 因此 D 错误。
第 9 题 答案:A、B、D
Python 集合中的元素具有无序性, 并且不能出现重复元素, 因此 A 正确 。集合 add() 方法用于添加元素, 如果添加已经存在的元素, 集合不会发生变化, 因此 B 正确 。remove() 删除不存在的元素时会产生 KeyError 异常, 因此 C 错误 。集合中有 1 、3 、5 、7 四个元素, 长度为 4, 因此 D 正确。
第 10 题 答案:B、C、D
递归函数是函数调用自身的过程, 每次调用都会消耗执行时间, 并且会在内存中保存调用信息, 因此B 、C 正确 。递归过程中参数通常会不断变化, 用于接近终止条件, 因此 A 错误 。递归必须设置终止条件, 否则会不断调用自身导致无限递归, 因此 D 正确。
2026 信息素养大赛 Python 小高组复赛 · 共 10 道选择题 + 4 道编程题少儿编程吕口口
点击“阅读全文”,下载打印版以及在线免费刷题

最新文章

随机文章