🔒 答案已锁定

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

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

第 1 题 单选题 2 分
在"红色地标打卡"程序中,需要从键盘输入一个地标名称并输出。以下哪个代码可以正确实现?
A. name = read("请输入地标名称:")
B. name = input("请输入地标名称:")
C. name = scan("请输入地标名称:")
D. name = get("请输入地标名称:")
✅ 正确答案:B
💡 考点解析:input()函数——Python中从键盘获取用户输入的标准函数
第 2 题 单选题 2 分
红军长征途中,某部队有total = 125斤粮食,分给people = 30位战士。计算每位战士能分到多少斤(整数除法),以及还剩多少斤(取余),以下代码的输出是什么?
total = 125
people = 30
each = total // people
remain = total % people
print(each, remain)
A. 4 5
B. 4.16 5
C. 4 15
D. 3 35
✅ 正确答案:A
💡 考点解析:整数除法 // 和取余运算符 %——125 // 30 = 4,125 % 30 = 5
第 3 题 单选题 2 分
在"红色标语展示牌"上,需要将输入的英文标语全部转换为大写字母显示。slogan = "Fight for Freedom",使用以下哪个方法可以得到 "FIGHT FOR FREEDOM"?
A. slogan.capitalize()
B. slogan.title()
C. slogan.upper()
D. slogan.lower()
✅ 正确答案:C
💡 考点解析:字符串方法——upper()将字符串全部转为大写,lower()转小写,capitalize()首字母大写,title()每个单词首字母大写
第 4 题 单选题 2 分
为纪念"红军长征胜利",需要在屏幕上倒数5秒。以下代码的输出是什么?
for i in range(5, 0, -1):
    print(i, end=" ")
print("出发!")
A. 1 2 3 4 5 出发!
B. 5 4 3 2 1 出发!
C. 5 4 3 2 1 0 出发!
D. 0 1 2 3 4 5 出发!
✅ 正确答案:B
💡 考点解析:range(start, stop, step)——range(5, 0, -1)从5递减到1(不包含0),end参数控制print不换行
第 5 题 单选题 2 分
在判断"是否为革命英雄"的程序中,以下关于布尔类型的描述,正确的是?
hero = "刘胡兰"
is_hero = (hero == "刘胡兰")
print(is_hero)
A. 输出结果为 True,布尔类型只有 True 和 False 两个值
B. 输出结果为 "刘胡兰"
C. 布尔类型有 True、False 和 None 三个值
D. 程序会报错,因为字符串不能和布尔类型比较
✅ 正确答案:A
💡 考点解析:布尔类型(bool)——比较运算的结果为布尔值 True 或 False
第 6 题 多选题 4 分
在"红军档案管理系统"中,需要判断变量所属的数据类型。以下关于Python数据类型的说法,正确的有哪些?
A. type(1949) 的结果是 <class 'int'>
B. type("雷锋") 的结果是 <class 'str'>
C. type(3.14) 的结果是 <class 'float'>
D. type("1949") 的结果是 <class 'int'>
✅ 正确答案:ABC
💡 考点解析:type()函数判断数据类型——整数(int)、字符串(str)、浮点数(float);D选项"1949"带引号是字符串类型
第 7 题 多选题 4 分
在"革命口号收集"程序中,需要使用列表存储多个口号。以下创建列表的方式,哪些是正确的?
A. slogans = ["为人民服务", "艰苦奋斗", "实事求是"]
B. slogans = list(("自力更生", "勤俭节约"))
C. slogans = "不忘初心,牢记使命".split(",")
D. slogans = list[1, 2, 3]
✅ 正确答案:ABC
💡 考点解析:列表的多种创建方式——直接[]、list()函数、split()方法;D选项使用了错误的方括号调用list
第 8 题 多选题 4 分
在撰写"红色主题作文"的辅助程序中,需要处理字符串。以下Python字符串方法的描述,正确的有哪些?
A. " 延安精神 ".strip() 可以去除字符串两端的空格,结果为 "延安精神"
B. "Hello World".replace("World", "China") 结果为 "Hello China"
C. "长征精神".find("精神") 返回子串"精神"首次出现的位置索引
D. len("不忘初心牢记使命") 可以获取字符串的长度(字符个数)
✅ 正确答案:ABCD
💡 考点解析:字符串常用方法——strip()去除两端空白、replace()替换、find()查找子串位置、len()获取长度
第 9 题 多选题 4 分
在"军衔等级评定"程序中,需要根据积分判断等级。以下关于 if-elif-else 结构的说法,正确的有哪些?
A. if 后面必须跟条件表达式,且条件表达式后面要加冒号
B. elif 可以有多个,表示"否则如果"
C. else 是可选的,表示以上所有条件都不满足时执行
D. 不管有多少个分支,最多只有一个分支会被执行
✅ 正确答案:ABCD
💡 考点解析:if-elif-else多分支结构——if必须、elif可有多个、else可选、多分支互斥执行
第 10 题 多选题 4 分
在编写"革命历史问答"程序时,需要给代码添加注释。以下关于Python注释的说法,正确的有哪些?
A. 单行注释使用 # 符号,例如 # 这是注释
B. 多行注释可以使用三个单引号 '''注释内容''' 或三个双引号 """注释内容"""
C. 注释的内容不会被执行,仅用于解释代码
D. // 这是注释 是Python的单行注释写法
✅ 正确答案:ABC
💡 考点解析:Python注释——单行用 #、多行用三引号、注释不影响程序执行;D选项 // 是Java/C++的注释方式
第 11 题 编程操作题 15 分

题目描述:
红军长征从江西瑞金出发,已知出发年份为1934年,到达陕北吴起镇为1935年。请你编写程序,输入两个年份(出发年份和到达年份),计算长征跨越了多少个年份。同时,输入长征总里程(里),计算平均每年行军多少里(保留1位小数)。

输入格式:
第一行两个整数,分别为出发年份和到达年份,用空格分隔。
第二行一个整数,表示总行军里程(里)。

输出格式:
第一行输出"跨越年份:X年"
第二行输出"平均每年行军:Y里"(Y保留1位小数)

示例输入:

1934 1935
25000

示例输出:

跨越年份:2年
平均每年行军:12500.0里
✅ 参考答案:
📖 参考代码
# 输入出发年份和到达年份
line = input().split()
start_year = int(line[0])
end_year = int(line[1])
# 跨越的年份数(包含起止年份)
years = end_year - start_year + 1
# 输入总里程
total_distance = int(input())
# 计算平均每年行军里程
avg_per_year = total_distance / years
print("跨越年份:" + str(years) + "年")
print("平均每年行军:" + str(round(avg_per_year, 1)) + "里")
第 12 题 编程操作题 15 分

题目描述:
在革命战争年代,红军有时会用简单的"反转法"来隐藏标语信息。规则是:将输入的标语字符串从头到尾完全反转后输出。例如:"红军不怕远征难" 反转后为 "难征远怕不军红"。请你编写程序,输入一句红色标语,输出反转后的标语。

输入格式:
一行字符串,表示原始标语(可能包含中文、英文、数字和空格)。

输出格式:
一行,反转后的字符串。
示例输入1:
不忘初心牢记使命
示例输出1:
命使记牢心忘初不
示例输入2:
Fight for Freedom
示例输出2:
modeerF rof thgiF

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
slogan = input()
# 使用字符串切片反转:[::-1] 表示从尾到头以步长-1取字符
reversed_slogan = slogan[::-1]
print(reversed_slogan)
第 13 题 编程操作题 20 分

题目描述:
学校举办"我最崇敬的革命英雄"评选活动,每位同学投票给一位英雄。请你编写程序,输入投票记录,统计每位英雄的得票数,并按照得票数从高到低输出排名。如果得票数相同,则按英雄名字的字典序升序排列。

输入格式:
第一行一个正整数 n(1 ≤ n ≤ 100),表示投票人数。
接下来 n 行,每行一个英雄名字(如"雷锋"、"黄继光"等)。

输出格式:
按得票数从高到低输出,每行格式为"英雄名:X票"。得票相同则按名字字典序升序。

示例输入:

8
雷锋
黄继光
雷锋
邱少云
雷锋
黄继光
董存瑞
雷锋

示例输出:

雷锋:4票
黄继光:2票
董存瑞:1票
邱少云:1票
✅ 参考答案:
📖 参考代码
n = int(input())
# 统计每位英雄的得票数
vote_dict = {}
for i in range(n):
    name = input()
    if name in vote_dict:
        vote_dict[name] += 1
    else:
        vote_dict[name] = 1
# 将字典转为列表,按票数降序、名字升序排序
items = []
for name in vote_dict:
    items.append((name, vote_dict[name]))
# 冒泡排序:先按票数降序,票数相同按名字升序
for i in range(len(items)):
    for j in range(i + 1, len(items)):
        # 需要交换的条件:票数更少 或 票数相同但名字更大
        if items[i][1] < items[j][1] or (items[i][1] == items[j][1] and items[i][0] > items[j][0]):
            items[i], items[j] = items[j], items[i]
# 输出结果
for name, count in items:
    print(name + ":" + str(count) + "票")
第 14 题 编程操作题 20 分

题目描述:
某学校根据学生的年龄段,推荐参观不同的红色教育基地。规则如下:
- 6岁及以下:推荐"红色绘本馆"
- 7~12岁:推荐"少年英雄纪念馆"
- 13~15岁:推荐"革命历史博物馆"
- 16~18岁:推荐"长征精神体验馆"
- 19岁及以上:推荐"红色文化研修院"
请你编写程序,输入 n 位学生的姓名和年龄,依次输出每位学生的推荐基地。

输入格式:
第一行一个正整数 n(1 ≤ n ≤ 50)。
接下来 n 行,每行一个学生姓名和一个整数年龄,用空格分隔。

输出格式:
n 行,每行格式为"姓名:推荐基地名称"。

示例输入:

4
小明 8
小红 14
小刚 17
李老师 35

示例输出:

小明:少年英雄纪念馆
小红:革命历史博物馆
小刚:长征精神体验馆
李老师:红色文化研修院
✅ 参考答案:
📖 参考代码
n = int(input())
for i in range(n):
    line = input().split()
    name = line[0]
    age = int(line[1])
    if age <= 6:
        place = "红色绘本馆"
    elif age <= 12:
        place = "少年英雄纪念馆"
    elif age <= 15:
        place = "革命历史博物馆"
    elif age <= 18:
        place = "长征精神体验馆"
    else:
        place = "红色文化研修院"
    print(name + ":" + place)