试卷总分:100分


选择题 5题 10分

01 02 03 04 05


多选题 5题 20分

10 11 12 13 14


编程题 4题 70分

15 16 17 18

E980 全国青少年信息素养大赛 -算法应用 星火征途 Python 【初中组】 复赛模拟题1-考试

选择题 共5道

01

执行以下代码后,输出结果是?

a = 10
b = 3
print(a % b, a // b)
2分
登录后查看选项
02

执行以下代码后,输出结果是?

s = 'python'
print(s[1:4], s[-2])
2分
登录后查看选项
03

执行以下循环代码后,输出的总次数是?

count = 0
for i in range(3):
    for j in range(2):
        if i == j:
            count += 1
print(count)
2分
登录后查看选项
04

执行以下代码后,输出结果是?

def func(lst):
    lst.append(10)
    lst = [1,2,3]
    return lst

nums = [4,5,6]
res = func(nums)
print(nums, res)
2分
登录后查看选项
05

以下代码用于计算列表中所有元素的乘积,存在错误的行是?

行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([]))
2分
登录后查看选项

多选题 共5道

10 以下关于 Python 函数的说法,正确的有? 4分
登录后查看选项
11 以下关于 Python 异常处理的说法,正确的有? 4分
登录后查看选项
12

执行以下代码后,关于变量结果的说法正确的有?

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)
4分
登录后查看选项
13

关于以下字典操作代码,说法正确的有?

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"]
4分
登录后查看选项
14

关于以下文件操作代码(假设文件 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()
4分
登录后查看选项

编程题 共4道

15

清点慰问品数量

题目描述

解放战争时期,解放区的支前民工们为前线战士准备慰问品,每份慰问品需要搭配 1 个白面馒头和 1 包咸菜。民工们需要快速清点馒头和咸菜的数量,算出能打包的完整慰问品份数,确保每份慰问品都能配齐,不浪费珍贵的物资。

编程实现:给定白面馒头的数量和咸菜包的数量,求能配齐的完整慰问品总数(即两类物品中数量较少的那个数,因为 1 份慰问品需要 1 个馒头 + 1 包咸菜)。

输入

一行,两个整数 a(馒头数量)b(咸菜包数量),空格分隔(0≤a,b≤1000)。

输出

一行,一个整数,表示能配齐的完整慰问品数量。

数据范围

0≤a,b≤1000

输入样例1

32 25

输出样例1

25

输入样例2

18 18

输出样例2

18

输入样例3

0 20

输出样例3

0


15分
登录后作答
16

根据地粮食储备调配

题目描述

红色根据地民生建设如火如荼,粮食储备是根据地民生保障与前线军粮供应的核心工作。为了筑牢民生根基、保障前线作战需求,根据地规划建设了大粮仓和小粮囤两类粮食储备设施。后勤建设人员需根据民生建设的设施规划总数和粮食储备总目标,精准计算大粮仓和小粮囤的建设数量组合,落实粮食储备的民生建设任务。

根据地开展粮食储备设施建设与粮食调配工作,规划有大粮仓和小粮囤两类储备设施:

  • 每座大粮仓可储备 12 石粮食;
  • 每个小粮囤可储备 4 石粮食;

编程实现:已知根据地民生建设规划的大粮仓 + 小粮囤总数量 s、根据地需完成的粮食储备总石数 p,求符合民生建设规划的设施数量组合。

输入

一行,两个整数 s(粮仓总数量,1 ≤s≤ 100)、p(粮食总数,1 ≤p≤ 1200),空格分隔。

输出

有合法方案:输出 X Y(X = 大粮仓数量,Y = 小粮囤数量,空格分隔);

无合法方案:输出 -1。

数据范围

1≤s≤100, 1≤p≤1200

输入样例1

15 100

输出样例1

5 10

输入样例2

20 80

输出样例2

0 20

输入样例3

10 100

输出样例3

-1


15分
登录后作答
17

情报加密

题目描述

抗日战争时期,八路军密码员需要将前线传回的明文情报加密后送往司令部。加密规则仅基于字符列表的基础操作实现,虽然没有复杂算法,但需要精准处理列表的切片、反转、拼接等细节。

加密步骤:

步骤 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

输入样例1

helloworld

2 4

输出样例1

ehdlllowro

输入样例2

abcdefghij

3 3

输出样例2

jihabcfedg

输入样例3

programming

1 5

输出样例3

gorpgrammin


20分
登录后作答
18

敌后武工队

题目描述

抗日战争时期,冀中平原的敌后武工队接到紧急任务:需将一份加密密信从根据地送到游击区联络点。敌占区被划分为网格状区域,不仅有敌人据点(不可通行),还存在「地雷区」和「老乡掩护点」;武工队需避开敌人,同时选择代价最低的路径送信,还要统计所有可行路径数量,确保任务万无一失。

网格为 n×n 的正方形(3≤n≤8),每个格子的取值定义:

  • 0 = 安全区(可通行,基础代价 1);
  • 1 = 敌人据点(不可通行);
  • 2 = 地雷区(可通行,但每步额外增加代价 3);
  • 3 = 老乡掩护点(可通行,代价减 1);

移动规则:仅能向上、下、左、右四个方向移动,不可越界、不可重复走同一格子、不可经过敌人据点;

路径代价定义:路径中所有格子的代价之和(起点和终点均计入代价);

任务要求:统计从起点 (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 算法不会产生运行超时现象。

输入样例1

3

0 2 0

0 1 3

0 0 0

输出样例1

2

5

输入样例2

4

0 0 2 0

1 0 1 0

0 3 0 2

0 0 0 0

输出样例2

10

6

输入样例3

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

输出样例3

40

14


20分
登录后作答