image

编辑人: 沉寂于曾经

calendar2025-08-02

message2

visits428

第15届蓝桥杯Python青少组选拔赛(STEMA)2023年10月真题(附视频解析)参考答案

一、单选题

1、若想获得两个集合中不重复的元素,可以使用(   ) 

A symmetric_difference()

B union() 

C issubset()

D intersection() 


2、已知: L = [1,2,3,4,5],执行 print(L[0] + L[-1])语句后,输出的结果是 (   ) 

A 4

B 5

C 6

D 7


3、执行 print(3 % 4)语句后,输出的结果是 (   ) 

A 0.75

B 3

C 4

D 12


4、以下哪个选项不可以作为字典的键? (   ) 

A 字符串

B 元组

C 整数

D 列表


5、使用 open 函数,以二进制格式打开一个文件用于追加的模式是 (   ) 

A rb

B wb

C a+

D ab


二、实操题

6、编程实现: 

给定一个字符,判断它是否是小写字母 a,如果是,就输出 Y,否则输出 N 

例如: 给定的字符#,不是小写字母 a,输出 N。 

输入描述

输入一个字符 

输出描述

输出一个字符,如果输入的字符是小写字母 a,就输出 Y,否则输出 N 


【样例输入】 

#

【样例输出】 

N

参考答案:br />根据题目要求,我们可以编写一个简单的程序来实现这个功能。下面是一个Python语言的示例代码:```pythonchar = input() # 从标准输入获取一个字符if char == 'a':print('Y')else:print('N')```这个程序首先通过`input()`函数从标准输入获取一个字符,然后判断这个字符是否等于'a'。如果是,就输出'Y',否则输出'N'。


7、编程实现: 

给定一个小数 N (1.0<N<99.99) ,输出 N 的整数部分例如: N = 11.62,11.62的整数部分为 11,则输出 11。 

输入描述

输入一个小数 N (1.0<N<99.99) 

输出描述

输出一个整数,表示 N 的整数部分 


【样例输入】 

11.62

【样例输出】 

11


参考答案:首先,读取输入的小数N,然后利用整数部分函数int()取整数部分,最后输出整数部分。


8、提示信息: 

平方: 是一种运算,表示一个数与它自身相乘的乘积。 

例如: 2 的平方为 4(4=2*2) ,5 的平方为 25 (25=5*5) 

编程实现:

给定 N 个正整数 (1<N<100) ,计算出 N 个正整数中所有偶数的平方并按照输入的顺序输出。 

例如:N = 5,5 个正整数分别为 1,4,3,2,4:其中偶数有 4、2、4;4 的平方为 16 (16=4*4) ,2 的平方为 4(4=2*2) ,4 的平方为 16 (16=4*4),输出的结果为 16,4,16。 

输入描述

第一行输入一个正整数 N (1<N<100),表示正整数的个数第二行输入 N个正整数 (1<正整数<200) ,正整数之间以一个英文逗号隔开 

输出描述

如果 N 个正整数中有偶数,则按照输入的顺序依次输出所有偶数的平方,平方数之间以一个英文逗号隔开,如果没有偶数,输出-1 


【输入样例】 

5
1,4,3,2,4

【输出样例】 

16,4,16

参考答案:根据题目要求,我们需要先读取输入的N个正整数,然后找出其中的偶数,并计算它们的平方,最后按照输入的顺序输出。输入样例中,N=5,输入的5个正整数分别为1,4,3,2,4。其中,偶数有4,2,4。它们的平方分别为16,4,16。因此,输出的结果为16,4,16。


9、编程实现: 

给定一个字符串 S (5<S 长度<50) ,请找出 S 中不含重复字符的最长子串的长度。

例如:s 为 ababc,其中 ababaababbababc,均为包含重复字符 的子串;而 ababbc 均为不含重复字符的子串,最长子串有 abc,所以不含重复字符的最长子串的长度为 3。 

输入描述

输入一个字符串 S (5<S 长度<50) 

输出描述

输出一个整数,表示 S 中不含重复字符的最长字串的长度


【输入样例】 

ababc

【输出样例】

3

参考答案:```pythondef find_max_length(s):max_length = 0current_length = 0char_set = set()for char in s:if char in char_set:current_length = 0else:current_length += 1max_length = max(max_length, current_length)char_set.add(char)return max_lengths = input()print(find_max_length(s))```


10、编程实现:(P1809 过河问题)

小青要赶 N (2<N<100) 匹小马过河,N 匹小马过河都需要一定的时间(分钟),小青每次过河最多能赶两匹小马 (骑一并赶一匹),返回时需骑一匹,每次过河的时间为走的慢的小马花费的时间。请计算至少需要多长时间才能把 N 匹小马全部赶过河。

例如: N = 4,4 匹小马过河需要的时间分别为 1,2,3,4 (单位: 分钟)。

用时最少的一种过河方式:

第一次:赶 1 分钟和 2 分钟的小马过河,然后骑 1 分钟的小马返回,共花费 3 分钟 (过去花费 2 分钟,回来花费 1 分钟)

第二次:赶 3 分钟和 4 分钟的小马过河,然后骑 2 分钟的小马返回,共花费 6 分钟 (过去花费 4 分钟,回来花费 2 分钟)

第三次: 赶 1 分钟和 2 分钟的小马过河,共花费 2 分钟 (过去花费 2 分钟)

总共最少花费的时间是 11 分钟(3+6+2=11)

输入说明

两行整数,第一行表示总共有多少匹马 N(2<N<100),第二行表示每匹马过河所需要的时间,数字之间以英文逗号隔开

输出说明

一行一个整数,表示将所有马儿赶过河所需要的最短时间


【输入样例】

4
1,2,3,4

【输出样例】

11

参考答案:根据题目要求,我们可以使用动态规划算法来解决这个问题。我们可以定义一个数组dp,其中dp[i]表示小青需要将前i匹小马全部赶过河所需的最短时间。我们可以按照小马过河所需时间从小到大的顺序进行遍历,对于每个小马j,我们需要计算两种情况下的时间,即赶j和j+1过河,然后返回骑j过河的时间加上dp[j+1]。另一种情况是只赶j过河,然后返回骑最快的小马过河的时间加上dp[j-1]。我们取这两种情况中的较小值作为dp[i]的值。最后返回dp[N]即可。


11、提示信息:

数字塔是由 N 行数堆积而成,最顶层只有一个数,次顶层两个数,以此类推。

相邻层之间的数用线连接,下一层的每个数与它上一层左上方和右上方的数连接 (左上方或右上方没有数则不需要连接)。

编程实现:

有一个 N 行 (0≤N≤50) 的数字塔,小蓝想要从最顶层开始,沿着线层一层向下移动,移动到最底层。小蓝想找出一条移动路径,使得路径上的数之和最大 (包含顶层和底层的数),请计算出最大的和是多少。 

例如: N=5,5 层的数字塔,每层的数如下图所示: 

从顶层数为 2 到底层数为 15 的路径上的数之和最大,最大和为 48。路径为: 

2+3-18-10- 15。 

输入描述

第一行输入一个正整数 N (2<N<50) ,表示数字塔的层数接下来输入 N 行,其中第一行为一个正整数,接下来每行的正整数比上一行多一个,每行的正整数之间以一个英文逗号隔开 (1<1 整数<1000) 

输出描述

输出一个整数,表示从数字塔最顶层移动到最底层的路径上的数之和的最大值 


【输入样例】 

5
2
3,12
18,8,3
5,10,13,2
4,15,7,6,8

【输出样例

48

参考答案:```pythondef max_sum(n):nums = []for i in range(n):nums.append(list(map(int, input().split(','))))dp = [[0] * (len(nums[i]) + 1) for _ in range(n)]for i in range(n):for j in range(1, len(nums[i]) + 1):dp[i][j] = max(dp[i - 1][j - 1] + nums[i][j - 1], dp[i - 1][j])return dp[n - 1][len(nums[n - 1])]n = int(input())print(max_sum(n))```


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第15届蓝桥杯Python青少组选拔赛(STEMA)2023年10月真题(附视频解析)参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share