试卷总分:100分
选择题 5题 10分
多选题 5题 20分
编程题 4题 70分
执行以下代码后,输出结果是?
a = 10 b = 3 print(a % b, a // b)
s = 'python' print(s[1:4], s[-2])
执行以下循环代码后,输出的总次数是?
count = 0 for i in range(3): for j in range(2): if i == j: count += 1 print(count)
def func(lst): lst.append(10) lst = [1,2,3] return lst nums = [4,5,6] res = func(nums) print(nums, res)
以下代码用于计算列表中所有元素的乘积,存在错误的行是?
行1: def product(lst): 行2: if not lst: 行3: return 1 行4: res = 0 行5: for num in lst: 行6: res *= num 行7: return res 行8: print(product([2,3,4])) 行9: print(product([]))
执行以下代码后,关于变量结果的说法正确的有?
def modify_data(a, b=[]): b.append(a) a = 10 return a, b x = 5 y = [1,2] res1, res2 = modify_data(x) res3, res4 = modify_data(x, y) res5, res6 = modify_data(x)
关于以下字典操作代码,说法正确的有?
d1 = {"name":"Tom", "scores":[85,90], "info":{"age":18}} d2 = d1.copy() d2["name"] = "Jerry" d2["scores"].append(95) d2["info"]["age"] = 19 del d2["info"]
关于以下文件操作代码(假设文件 data.txt 初始为空),说法正确的有?
with open("data.txt", "w", encoding="utf-8") as f: f.write("Line1\n") f.write("Line2") with open("data.txt", "r", encoding="utf-8") as f: line1 = f.readline() all_lines = f.readlines() f.seek(0) content = f.read()
解放战争时期,解放区的支前民工们为前线战士准备慰问品,每份慰问品需要搭配 1 个白面馒头和 1 包咸菜。民工们需要快速清点馒头和咸菜的数量,算出能打包的完整慰问品份数,确保每份慰问品都能配齐,不浪费珍贵的物资。
编程实现:给定白面馒头的数量和咸菜包的数量,求能配齐的完整慰问品总数(即两类物品中数量较少的那个数,因为 1 份慰问品需要 1 个馒头 + 1 包咸菜)。
一行,两个整数 a(馒头数量)b(咸菜包数量),空格分隔(0≤a,b≤1000)。
一行,一个整数,表示能配齐的完整慰问品数量。
0≤a,b≤1000
32 25
25
18 18
18
0 20
0
红色根据地民生建设如火如荼,粮食储备是根据地民生保障与前线军粮供应的核心工作。为了筑牢民生根基、保障前线作战需求,根据地规划建设了大粮仓和小粮囤两类粮食储备设施。后勤建设人员需根据民生建设的设施规划总数和粮食储备总目标,精准计算大粮仓和小粮囤的建设数量组合,落实粮食储备的民生建设任务。
根据地开展粮食储备设施建设与粮食调配工作,规划有大粮仓和小粮囤两类储备设施:
编程实现:已知根据地民生建设规划的大粮仓 + 小粮囤总数量 s、根据地需完成的粮食储备总石数 p,求符合民生建设规划的设施数量组合。
一行,两个整数 s(粮仓总数量,1 ≤s≤ 100)、p(粮食总数,1 ≤p≤ 1200),空格分隔。
有合法方案:输出 X Y(X = 大粮仓数量,Y = 小粮囤数量,空格分隔);
无合法方案:输出 -1。
1≤s≤100, 1≤p≤1200
15 100
5 10
20 80
10 100
-1
抗日战争时期,八路军密码员需要将前线传回的明文情报加密后送往司令部。加密规则仅基于字符列表的基础操作实现,虽然没有复杂算法,但需要精准处理列表的切片、反转、拼接等细节。
加密步骤:
步骤 1:将明文字符串转换为字符列表,对列表执行循环右移 step 步操作(循环右移定义:将列表最后 step 个元素剪切到列表最前面);
步骤 2:将移位后的字符列表按长度 k 进行分段,最后一段若长度不足 k 则保留原有长度;
步骤 3:对所有奇数位置的分段(分段从 1 开始计数,即第 1、3、5... 段)执行反转操作,偶数位置的分段保持不变;
步骤 4:将所有处理后的分段按顺序拼接为一个新的字符列表,作为最终加密字符列表;
第一行输入一个仅包含小写字母的明文字符串,字符串长度满足 5 ≤ 长度 ≤ 20;
第二行输入两个整数,分别为移位步数 step(1 ≤ step ≤ 10)和分段长度 k(2 ≤ k ≤ 明文长度 - 1),两个整数之间用空格分隔;
(注意:步数step一定不会大于明文长度)
最后一行输出最终加密字符串,字符串无任何分隔符。
5≤字符串长度≤20,1≤step≤10,2≤k≤明文长度-1
helloworld
2 4
ehdlllowro
abcdefghij
3 3
jihabcfedg
programming
1 5
gorpgrammin
抗日战争时期,冀中平原的敌后武工队接到紧急任务:需将一份加密密信从根据地送到游击区联络点。敌占区被划分为网格状区域,不仅有敌人据点(不可通行),还存在「地雷区」和「老乡掩护点」;武工队需避开敌人,同时选择代价最低的路径送信,还要统计所有可行路径数量,确保任务万无一失。
网格为 n×n 的正方形(3≤n≤8),每个格子的取值定义:
移动规则:仅能向上、下、左、右四个方向移动,不可越界、不可重复走同一格子、不可经过敌人据点;
路径代价定义:路径中所有格子的代价之和(起点和终点均计入代价);
任务要求:统计从起点 (0,0) 到终点 (n−1, n−1)的所有可行路径数量,找出所有可行路径中的最小代价。
第一行:整数 n(网格边长,3≤n≤8);
接下来 n 行:每行 n 个整数(0/1/2/3),表示网格每个位置的类型。
第一行:一个整数,可行路径的总数(若无可行路径输出 0);
第二行:一个整数,最小路径代价(若无可行路径输出 - 1);
3≤n≤8,网格元素仅为 0/1/2/3。
本题大地图测试数据中含有大量障碍物,有效路径数量受限,标准 DFS 算法不会产生运行超时现象。
3
0 2 0
0 1 3
0 0 0
2
5
4
0 0 2 0
1 0 1 0
0 3 0 2
0 0 0 0
10
6
8
0 0 1 0 0 0 0 0
0 0 0 0 1 1 1 0
1 1 1 0 0 0 1 0
0 0 0 0 3 0 1 0
0 1 1 1 1 0 1 0
0 2 2 0 0 0 0 0
0 1 1 1 1 1 1 0
0 0 0 3 0 0 2 0
40
14