算法应用主题赛 · Python · 共 14 题(5单选+5多选+4编程)· 满分 100 分
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]?[表达式 for 变量 in 可迭代对象],range(1, 11)生成1到10encode = lambda x: (x + 3) % 26
result = encode(24)
print(result)lambda 参数: 表达式,(24+3)%26 = 27%26 = 1math 模块的说法,正确的是?slogans = ["奋斗", "前进", "奋斗", "胜利", "奋斗"],想知道"奋斗"出现了几次,以下哪个代码正确?landmarks = ["井冈山", "延安", "西柏坡", "遵义"]
for i, name in enumerate(landmarks):
print(str(i + 1) + "." + name)题目描述:
红军情报站收到一批情报,每条情报是一个字符串。情报的校验规则如下:
1. 长度必须在6到12个字符之间(含)
2. 必须同时包含字母和数字
3. 不能包含空格
请你编写程序,输入一条情报字符串,判断其是否合法。如果合法输出"情报合法",否则输出"情报不合法"。
输入格式:
一行字符串,表示情报内容。
输出格式:
一行,"情报合法"或"情报不合法"。
示例输入1:
RedArmy1936
示例输出1:
情报合法
示例输入2:
abc123
示例输出2:
情报合法
示例输入3:
ab12
示例输出3:
情报不合法
示例输入:
示例输出:
info = input()
# 检查长度
if len(info) < 6 or len(info) > 12:
print("情报不合法")
else:
has_letter = False
has_digit = False
has_space = False
for ch in info:
if ch == " ":
has_space = True
if ch.isalpha():
has_letter = True
if ch.isdigit():
has_digit = True
if has_space or not has_letter or not has_digit:
print("情报不合法")
else:
print("情报合法")
题目描述:
红军后勤部有若干种物资,每种物资有固定的数量。前线需要一定数量的物资补给,请你判断现有的物资总量是否满足前线需求,以及还需要补充多少或剩余多少。
输入格式:
第一行一个整数 n(1 ≤ n ≤ 20),表示物资种类数。
接下来 n 行,每行一个物资名称和一个整数数量,用空格分隔。
最后一行一个整数 demand,表示前线的总需求量。
输出格式:
如果物资总量 ≥ 需求量,输出"物资充足,剩余X单位"(X为剩余量)。
如果物资总量 < 需求量,输出"物资不足,缺少X单位"(X为缺少量)。
示例输入1:
4
粮食 500
弹药 300
药品 100
被服 200
900
示例输出1:
物资充足,剩余200单位
示例输入2:
3
粮食 200
弹药 150
药品 80
500
示例输出2:
物资不足,缺少70单位
示例输入:
示例输出:
n = int(input())
total = 0
for i in range(n):
line = input().split()
quantity = int(line[1])
total += quantity
demand = int(input())
if total >= demand:
print("物资充足,剩余" + str(total - demand) + "单位")
else:
print("物资不足,缺少" + str(demand - total) + "单位")
题目描述:
红军某部队的行军日志记录了每天的行军信息,格式为"日期,出发地,目的地,行军里程,天气"。请你编写程序,处理这些日志数据,完成以下统计:
1. 计算总行军里程
2. 找出行军里程最长的一天的所有信息
3. 统计每种天气出现的天数
日志数据(已内置在代码中):
1934-10-16,瑞金,于都,90,晴
1934-10-17,于都,信丰,85,晴
1934-10-18,信丰,大余,75,阴
1934-10-19,大余,南雄,100,晴
1934-10-20,南雄,仁化,60,雨
输入格式:
无输入(直接处理内置的日志数据)。
输出格式:
第一行输出"总行军里程:X里"
第二行输出"最长行军日:日期,出发地→目的地,里程里,天气"
之后输出"天气统计:",每行格式为"天气名:X天",按天气名字典序升序排列。
示例输入:
示例输出:
# 行军日志数据
log_data = [
"1934-10-16,瑞金,于都,90,晴",
"1934-10-17,于都,信丰,85,晴",
"1934-10-18,信丰,大余,75,阴",
"1934-10-19,大余,南雄,100,晴",
"1934-10-20,南雄,仁化,60,雨"
]
total_distance = 0
max_distance = 0
max_day_info = ""
weather_count = {}
for line in log_data:
parts = line.split(",")
date = parts[0]
start = parts[1]
end = parts[2]
distance = int(parts[3])
weather = parts[4]
total_distance += distance
if distance > max_distance:
max_distance = distance
max_day_info = date + "," + start + "→" + end + "," + str(distance) + "里," + weather
if weather in weather_count:
weather_count[weather] += 1
else:
weather_count[weather] = 1
print("总行军里程:" + str(total_distance) + "里")
print("最长行军日:" + max_day_info)
print("天气统计:")
# 按天气名排序输出
for weather in sorted(weather_count.keys()):
print(weather + ":" + str(weather_count[weather]) + "天")
题目描述:
某红色旅游区有n个地标,每个地标有名称和参观所需时间(分钟)。游客有T分钟的总时间,希望参观尽量多的地标。请你编写程序,采用贪心策略(优先选择参观时间最短的地标),计算最多能参观多少个地标,并输出参观方案。
输入格式:
第一行两个整数 n 和 T(1 ≤ n ≤ 100,1 ≤ T ≤ 1000),用空格分隔。
接下来 n 行,每行一个地标名称和一个整数时间(分钟),用空格分隔。
输出格式:
第一行输出"最多可参观:X个地标"
第二行输出参观路线(地标名之间用"→"连接)
示例输入:
示例输出:
line = input().split()
n = int(line[0])
T = int(line[1])
sites = []
for i in range(n):
parts = input().split()
name = parts[0]
time_cost = int(parts[1])
sites.append((name, time_cost))
# 按参观时间从小到大排序(选择排序)
for i in range(len(sites)):
min_idx = i
for j in range(i + 1, len(sites)):
if sites[j][1] < sites[min_idx][1]:
min_idx = j
sites[i], sites[min_idx] = sites[min_idx], sites[i]
# 贪心选择
selected = []
total_time = 0
for site in sites:
if total_time + site[1] <= T:
selected.append(site[0])
total_time += site[1]
else:
break
print("最多可参观:" + str(len(selected)) + "个地标")
print("→".join(selected))