🔒 答案已锁定

📖 答案解析 — 丝路新程(丝路文化) — 简单

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

第 1 题 单选题 2 分
西域三十六国中,龟兹国的名称用字符串表示为 name = "龟兹"。执行 len(name) 的结果是?
A. 1
B. 2
C. 3
D. 0
✅ 正确答案:B
💡 考点解析:len() 函数、字符串长度
第 2 题 单选题 2 分
河西走廊的四个重镇名称存储在字符串中:route = "敦煌酒泉张掖武威"。要获取最后一个字"威",正确的索引方式是?
A. route[5]
B. route[-1]
C. route[8]
D. route[7]
✅ 正确答案:B
💡 考点解析:字符串索引(含负索引)
第 3 题 单选题 2 分
驼队商人用 input() 输入运送的丝绸匹数。以下关于 input() 的说法,正确的是?
A. input() 返回的是整数(int)类型
B. input() 返回的是字符串(str)类型
C. input() 返回的是列表(list)类型
D. input() 只能接收数字输入
✅ 正确答案:B
💡 考点解析:input() 函数的返回值类型
第 4 题 单选题 2 分
商人清点仓库中的香料袋数。以下 while 循环执行后,count 的值是多少?
count = 0
bags = 5
while bags > 0:
    count += 1
    bags -= 1
print(count)
A. 0
B. 4
C. 5
D. 6
✅ 正确答案:C
💡 考点解析:while 循环的基本执行流程
第 5 题 单选题 2 分
在丝绸之路贸易中,商人判断是否能够成交:需要同时满足"货物充足"且"价格合理"。用变量 enough_stock = True 和 price_ok = False 表示。以下哪个表达式的结果为 True?
A. enough_stock and price_ok
B. enough_stock or price_ok
C. not enough_stock
D. enough_stock and not price_ok
✅ 正确答案:B
💡 考点解析:逻辑运算符(and、or、not)
第 6 题 多选题 4 分
在丝路贸易记录中,商人需要对商品名称字符串进行处理。已知 s = " 丝绸 "(前后有空格),以下说法正确的有?(多选)
A. s.strip() 的结果是 "丝绸"
B. s.upper() 的结果是 " 丝绸 "(不变,因为中文没有大小写)
C. "丝绸贸易".replace("丝绸", "瓷器") 的结果是 "瓷器贸易"
D. "abc123".isdigit() 的结果是 False
✅ 正确答案:ACD
💡 考点解析:字符串常用方法(strip、replace、isdigit)
第 7 题 多选题 4 分
商人在计算货物总量时使用了赋值运算符。假设 total = 100,以下说法正确的有?(多选)
A. total += 50 执行后,total 的值变为 150
B. total -= 30 执行后,total 的值变为 70
C. total *= 2 执行后,total 的值变为 200
D. total /= 4 执行后,total 的值变为 25.0
✅ 正确答案:ABCD
💡 考点解析:复合赋值运算符(+=、-=、*=、/=)
第 8 题 多选题 4 分
驼队商人用 range() 函数生成每天的编号。以下关于 range() 的说法,正确的有?(多选)
A. range(1, 6) 生成的数字序列为 1, 2, 3, 4, 5
B. range(1, 10, 2) 生成的数字序列为 1, 3, 5, 7, 9
C. range(5) 生成的数字序列为 0, 1, 2, 3, 4
D. range(5, 0, -1) 生成的数字序列为 5, 4, 3, 2, 1
✅ 正确答案:ABCD
💡 考点解析:range() 函数的参数(起始值、终止值、步长)
第 9 题 多选题 4 分
丝路贸易中,商人用元组存储不可修改的商品产地信息。关于元组的说法,正确的有?(多选)
A. 元组使用小括号 () 定义,如 origin = ("长安", "敦煌")
B. 元组中的元素一旦创建就不能修改
C. 可以通过索引访问元组中的元素,如 origin[0] 返回 "长安"
D. 可以使用 origin.append("楼兰") 向元组中添加元素
✅ 正确答案:ABC
💡 考点解析:元组的定义、特性与基本操作
第 10 题 多选题 4 分
在丝路驿站管理系统中,使用 print() 函数输出信息。以下关于 print() 用法的描述,正确的有?(多选)
A. print("丝绸", "瓷器", "茶叶") 默认以空格分隔,输出 丝绸 瓷器 茶叶
B. print("第一天", end="→") 输出后不换行,并在末尾加上 →
C. print("里程", "40里", sep=":") 输出 里程:40里
D. print() 括号中不写任何内容也能正常执行
✅ 正确答案:ABCD
💡 考点解析:print() 函数的参数(sep、end)
第 11 题 编程操作题 15 分

题目描述:
丝绸之路上的香料商人每天进行交易。请你编写程序,使用 while 循环,让用户连续输入每天卖出的香料袋数(正整数)。当输入为 0 时表示当天没有交易,循环结束。程序输出累计卖出的香料总袋数。

输入格式:
多行输入,每行一个整数,表示当天卖出的香料袋数。当输入为 0 时停止输入。

输出格式:
一行,输出"累计卖出香料:X袋"(X为总袋数)。

示例输入:

3
5
2
0

示例输出:

累计卖出香料:10袋
✅ 参考答案:
📖 参考代码
total = 0
while True:
    bags = int(input())
    if bags == 0:
        break
    total += bags
print("累计卖出香料:" + str(total) + "袋")
第 12 题 编程操作题 15 分

题目描述:
丝绸之路上的驼队需要检查货物的总重量是否超过了骆驼的承载能力。每匹骆驼的最大负重为 200 斤。请你编写程序,用户输入货物的总重量(斤),程序判断并输出:
- 如果总重量小于等于 200 斤,输出"安全,可以出发。"
- 如果总重量大于 200 斤且小于等于 250 斤,输出"超重,需要减少货物。"
- 如果总重量大于 250 斤,输出"严重超重,需要增加骆驼。"

输入格式:
一行,一个正整数,表示货物的总重量(斤)。

输出格式:
一行,按上述规则输出判断结果。
示例输入1:
180
示例输出1:
安全,可以出发。
示例输入2:
230
示例输出2:
超重,需要减少货物。
示例输入3:
280
示例输出3:
严重超重,需要增加骆驼。

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
weight = int(input())
if weight <= 200:
    print("安全,可以出发。")
elif weight <= 250:
    print("超重,需要减少货物。")
else:
    print("严重超重,需要增加骆驼。")
第 13 题 编程操作题 20 分

题目描述:
河西走廊是中国古代丝绸之路的重要通道,沿线有四大重镇:敦煌、酒泉、张掖、武威。请你编写程序完成以下城市名称处理任务:
1. 用户输入一个城市名称(可能是中文或拼音,大小写混合)。
2. 程序对该名称进行以下处理并逐行输出:
- 去掉名称两端的空格
- 将名称全部转为大写字母(如果是拼音输入)或原样保留(中文无法转大小写)
- 判断名称中是否包含"敦煌"二字
- 输出该名称的字符数(汉字个数)

输入格式:
一行,一个字符串,表示城市名称。

输出格式:
第一行:去除空格后:[名称]
第二行:转为大写后:[名称]
第三行:包含"敦煌":[True/False]
第四行:字符数:X个
示例输入1:
敦煌
示例输出1:
去除空格后:敦煌
转为大写后:敦煌
包含"敦煌":True
字符数:2个
示例输入2:
DunHuang
示例输出2:
去除空格后:DunHuang
转为大写后:DUNHUANG
包含"敦煌":False
字符数:8个

示例输入:

示例输出:

✅ 参考答案:
📖 参考代码
city = input()
# 去除空格
city_stripped = city.strip()
print("去除空格后:" + city_stripped)
# 转为大写
city_upper = city_stripped.upper()
print("转为大写后:" + city_upper)
# 判断是否包含"敦煌"
contains_dh = "敦煌" in city_stripped
print("包含\"敦煌\":" + str(contains_dh))
# 字符数
length = len(city_stripped)
print("字符数:" + str(length) + "个")
第 14 题 编程操作题 20 分

题目描述:
丝绸之路上的商队每天都会记录当天的交易收入(单位:文)。请你编写程序,实现以下功能:
1. 用户首先输入一个整数 n,表示接下来要记录 n 天的收入。
2. 依次输入 n 个正整数(每行一个),表示每天的收入。
3. 程序将每天的收入存入一个列表中,然后执行以下操作并输出:
- 输出完整的收入列表
- 计算总收入(所有天数收入之和)
- 找出收入最高的一天是哪一天(输出天数编号,从第1天开始;如果有并列最高,输出最先出现的那天)

输入格式:
第一行:一个正整数 n,表示记录天数。
接下来 n 行:每行一个正整数,表示当天的收入(文)。

输出格式:
第一行:每日收入:[列表]
第二行:总收入:X文
第三行:收入最高:第Y天

示例输入:

5
300
500
200
500
400

示例输出:

每日收入:[300, 500, 200, 500, 400]
总收入:1900文
收入最高:第2天
✅ 参考答案:
📖 参考代码
n = int(input())
incomes = []
for i in range(n):
    income = int(input())
    incomes.append(income)
# 输出收入列表
print("每日收入:" + str(incomes))
# 计算总收入
total = sum(incomes)
print("总收入:" + str(total) + "文")
# 找出收入最高的一天
max_income = incomes[0]
max_day = 1
for i in range(1, n):
    if incomes[i] > max_income:
        max_income = incomes[i]
        max_day = i + 1
print("收入最高:第" + str(max_day) + "天")