🔒 答案已锁定

📖 答案解析 — 星火征途(红色文化) — 简单

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

第 1 题 单选题 2 分
在"红色数字纪念馆"系统中,从传感器读取的温度数据是字符串"36.5",需要转换为浮点数进行计算。以下哪个代码可以正确转换?
A. int("36.5")
B. float("36.5")
C. str(36.5)
D. bool("36.5")
✅ 正确答案:B
💡 考点解析:数据类型转换——float()将字符串转为浮点数;int()不能直接转换带小数点的字符串
第 2 题 单选题 2 分
在统计"红军英雄墙"上英雄名字的字数时,可以使用哪个内置函数获取字符串长度?
hero = "董存瑞"
length = ______(hero)
print(length)
A. count
B. size
C. len
D. length
✅ 正确答案:C
💡 考点解析:内置函数len()——获取字符串、列表等序列的长度
第 3 题 单选题 2 分
红军某连队每天消耗粮食若干斤,初始有1000斤粮食,需要模拟每天消耗直到粮食不足的过程。以下代码执行后,day的值是多少?
food = 10
day = 0
while food >= 3:
    food = food - 3
    day = day + 1
print(day)
A. 2
B. 3
C. 4
D. 5
✅ 正确答案:B
💡 考点解析:while循环——当条件满足时重复执行;10减3次3后剩余1,不足3,循环执行3次
第 4 题 单选题 2 分
有一个列表heroes = ["雷锋", "董存瑞", "黄继光", "邱少云", "刘胡兰"],如何获取最后一个英雄的名字?
A. heroes[0]
B. heroes[4]
C. heroes[-1]
D. heroes[5]
✅ 正确答案:C
💡 考点解析:列表负索引——[-1]表示最后一个元素,[-2]表示倒数第二个
第 5 题 单选题 2 分
在"红军战绩评比"中,记录了5次战役的歼敌数量,需要找出最大值和最小值。battles = [860, 1200, 350, 2000, 480],以下哪个选项可以正确获取最大歼敌数和最小歼敌数?
A. max(battles) 和 min(battles),结果为 2000 和 350
B. battles.max() 和 battles.min(),结果为 2000 和 350
C. maximum(battles) 和 minimum(battles),结果为 2000 和 350
D. battles[0] 和 battles[-1],结果为 860 和 480
✅ 正确答案:A
💡 考点解析:内置函数max()和min()——获取可迭代对象中的最大值和最小值
第 6 题 多选题 4 分
在"军需物资计算"程序中,使用了各种运算符。以下关于Python运算符的说法,正确的有哪些?
A. 是幂运算符,2 3 的结果是 8
B. // 是整数除法运算符,17 // 5 的结果是 3
C. % 是取余运算符,17 % 5 的结果是 2
D. * 是乘法运算符,也可以用于字符串重复,"红军" * 3 的结果是 "红军红军红军"
✅ 正确答案:ABCD
💡 考点解析:Python运算符——算术运算符(**幂、//整除、%取余)和字符串的*重复操作
第 7 题 多选题 4 分
在"革命烈士名录"的遍历输出任务中,以下关于 for 循环的说法,正确的有哪些?
A. for ch in "刘胡兰": 可以依次遍历字符串中的每个字符
B. for name in ["雷锋", "董存瑞", "黄继光"]: 可以依次遍历列表中的每个元素
C. for i in range(5): 中的 i 取值依次为 0, 1, 2, 3, 4
D. for i in range(1, 6): 中的 i 取值依次为 1, 2, 3, 4, 5, 6
✅ 正确答案:ABC
💡 考点解析:for循环——遍历字符串、遍历列表、range(n)从0到n-1、range(start, stop)从start到stop-1
第 8 题 多选题 4 分
在"情报联络员名单"管理程序中,需要对列表进行增删操作。以下关于列表操作的说法,正确的有哪些?
A. names.append("新联络员") 在列表末尾添加一个元素
B. names.insert(0, "首位联络员") 在列表开头插入一个元素
C. names.pop() 删除并返回列表最后一个元素
D. names.remove("指定联络员") 删除列表中第一个匹配的元素
✅ 正确答案:ABCD
💡 考点解析:列表的增删操作——append()末尾添加、insert()指定位置插入、pop()删除末尾(或指定索引)、remove()按值删除
第 9 题 多选题 4 分
在"红色密码解读"任务中,需要使用逻辑运算符组合多个条件。以下关于逻辑运算符的说法,正确的有哪些?
A. and 表示"且",两边的条件都成立时整体才为 True
B. or 表示"或",两边条件只要有一个成立整体就为 True
C. not 表示"非",将 True 变为 False,False 变为 True
D. 10 < 20 and 5 > 3 的结果是 True
✅ 正确答案:ABCD
💡 考点解析:逻辑运算符——and(且)、or(或)、not(非)的含义和用法
第 10 题 多选题 4 分
在编写"红色精神传承"互动程序时,需要获取用户输入。以下关于 input() 函数的说法,正确的有哪些?
A. input() 函数获取的用户输入始终是字符串类型
B. input("请输入你的名字:") 括号中的文字会作为提示信息显示给用户
C. 如果需要获取整数,可以使用 int(input()) 进行转换
D. input() 函数可以同时接收多个值,如 x, y = input()
✅ 正确答案:ABC
💡 考点解析:input()函数——返回字符串类型、可带提示参数、需手动转换类型;D选项错误,一次input()只返回一行字符串
第 11 题 编程操作题 15 分

题目描述:
红军后方医院需要将药品保存温度从华氏度转换为摄氏度。转换公式为:摄氏度 = (华氏度 - 32) × 5 / 9。请你编写程序,输入华氏温度,输出对应的摄氏温度(保留2位小数)。

输入格式:
一个浮点数,表示华氏温度。

输出格式:
一行,格式为"摄氏温度:X度"(X保留2位小数)。

示例输入:

98.6

示例输出:

摄氏温度:37.00度
✅ 参考答案:
📖 参考代码
f = float(input())
c = (f - 32) * 5 / 9
print("摄氏温度:" + str(round(c, 2)) + "度")
第 12 题 编程操作题 15 分

题目描述:
在一句红色标语中,统计某个关键字出现的次数。例如标语"不忘初心牢记使命不忘初心"中,"初心"出现了2次。请你编写程序,输入一句标语和一个关键字,输出关键字在标语中出现的次数。

输入格式:
第一行一个字符串,表示标语。
第二行一个字符串,表示要统计的关键字。

输出格式:
一行,格式为"关键字'X'出现了Y次"。
示例输入1:
不忘初心牢记使命不忘初心
初心
示例输出1:
关键字'初心'出现了2次
示例输入2:
星星之火可以燎原
星
示例输出2:
关键字'星'出现了2次

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
slogan = input()
keyword = input()
count = 0
# 遍历标语中每个可能的起始位置
for i in range(len(slogan) - len(keyword) + 1):
    # 截取与关键字等长的子串进行比较
    if slogan[i:i + len(keyword)] == keyword:
        count += 1
print("关键字'" + keyword + "'出现了" + str(count) + "次")
第 13 题 编程操作题 20 分

题目描述:
红军征兵处需要根据体能测试成绩筛选合格战士。规则是:体能成绩大于等于60分为合格。请你编写程序,输入 n 位报名者的姓名和体能成绩,分别输出合格名单和不合格名单(按输入顺序输出)。

输入格式:
第一行一个正整数 n(1 ≤ n ≤ 50)。
接下来 n 行,每行一个姓名和一个整数成绩(0~100),用空格分隔。

输出格式:
第一行输出"合格战士:",之后每行一个姓名(按输入顺序)。
然后输出"不合格战士:",之后每行一个姓名(按输入顺序)。
如果某类名单为空,则在该类标题后输出"无"。

示例输入:

6
张卫国 85
李铁柱 55
王大山 72
赵小刚 48
孙向前 90
周建军 60

示例输出:

合格战士:
张卫国
王大山
孙向前
周建军
不合格战士:
李铁柱
赵小刚
✅ 参考答案:
📖 参考代码
n = int(input())
qualified = []
unqualified = []
for i in range(n):
    line = input().split()
    name = line[0]
    score = int(line[1])
    if score >= 60:
        qualified.append(name)
    else:
        unqualified.append(name)
print("合格战士:")
if len(qualified) == 0:
    print("无")
else:
    for name in qualified:
        print(name)
print("不合格战士:")
if len(unqualified) == 0:
    print("无")
else:
    for name in unqualified:
        print(name)
第 14 题 编程操作题 20 分

题目描述:
革命根据地入口设有一个简单的密码锁,密码为"1921"(中国共产党的成立年份)。守卫允许最多3次输入机会。如果输入正确,输出"密码正确,欢迎进入根据地!";如果3次都输入错误,输出"密码错误,已锁定!"。
请你编写程序,模拟这个密码验证过程。

输入格式:
最多3行,每行一个字符串,表示输入的密码。如果中途密码正确,可以少于3行。

输出格式:
如果密码正确,输出"密码正确,欢迎进入根据地!"并结束程序。
如果3次都错误,输出"密码错误,已锁定!"。
示例输入1:
1911
1921
示例输出1:
密码正确,欢迎进入根据地!
示例输入2:
1111
2222
3333
示例输出2:
密码错误,已锁定!

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
PASSWORD = "1921"
max_attempts = 3
success = False
for i in range(max_attempts):
    guess = input()
    if guess == PASSWORD:
        print("密码正确,欢迎进入根据地!")
        success = True
        break
if not success:
    print("密码错误,已锁定!")