image

编辑人: 未来可期

calendar2025-06-15

message4

visits858

第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年12月18日真题参考答案

一、单选题

1、执行print(5**3)语句后,输出的结果是(   )。

A 0

B 15

C 125

D 2


2、在Python中,使用以下哪个关键字创建自定义函数?(   )

A function

B public

C func

D def


3、已知:L = ['a', 1, 'b', 2 , 'a', 2, 'c', 2 ],执行print(len(set(L)))语句后,输出的结果是(   )。

A 2

B a

C 5

D 8


4、下列方法描述不正确的是(   )。

A tuple()可以将元组转换成列表

B insert()可以在列表的指定位置添加元素

C find()可以检索字符串中是否包含指定的字符串 

D index()可以查询某元素在列表中第一次出现的下标(索引)位置


5、以下对可选参数描述不正确的是(   )。

A 可选参数写在必选参数前边

B 可选参数定义时必须指定默认值

C 多个可选参数之间需要逗号分隔

D 可选参数可以只有1个


二、实操题

6、编程实现:

给定一个正整数N(2≤N≤100),输出N个连续的大写字母“A”(字母之间没有空格)。

例如:N = 3,则输出“AAA”。

输入描述:

输入一个正整数N(2≤N≤100)

输出描述:

输出N个连续的大写字母“A”(字母之间没有空格)


样例输入:

3

样例输出:

AAA

参考答案:br />```pythonN = int(input())print('A' * N)```


7、编程实现:

小明将A、B两种卡片摆成一排(每种卡片若干张),请找出这排卡片中A卡片的数量。

输入描述:

输入一个只包含A、B两种字符组成的字符串(1<字符串长度<1000),表示这排卡片的摆放情况

输出描述:

输出一个整数,表示字符串中字符“A”的个数

 

样例输入:

ABBAA

样例输出:

3

参考答案:br />```pythondef count_A(cards):count = 0for card in cards:if card == 'A':count += 1return count# 测试cards = input()print(count_A(cards))```


8、编程实现:

有N(2≤N≤80)堆玻璃球,且已知每堆玻璃球的数量。小明每次只能从其中一堆玻璃球中拿出1颗或者2颗。

请你帮助小明计算出,最少需要拿多少次才能把N堆玻璃球全部拿完。

例如:

N = 3,3堆玻璃球的数量分别为6,5,3,最少需要拿8次,具体拿法如下:

6颗的玻璃球最少需要拿3次,第一次拿2个,第二次拿2个,第三次拿2个;

5颗的玻璃球最少需要拿3次,第一次拿2个,第二次拿2个,第三次拿1个;

3颗的玻璃球最少需要拿2次,第一次拿2个,第二次拿1个。

输入描述:

第一行输入一个正整数N(2≤N≤80),表示玻璃球总堆数

第二行输入N个正整数(1≤正整数≤50),分别表示每堆玻璃球的数量,正整数之间以一个英文逗号隔开

输出描述:

输出一个整数,表示拿完N堆玻璃球最少需要拿取的次数


样例输入:

3
6,5,3

样例输出:

8

参考答案:br />```pythondef min_times(玻璃球堆数, 玻璃球数量列表):玻璃球总数 = sum(玻璃球数量列表)拿取次数 = 0拿取次数 += ceil(玻璃球总数 / 2)return拿取次数玻璃球堆数 = int(input().strip())玻璃球数量列表 = list(map(int, input().strip().split(',')))print(min_times(玻璃球堆数, 玻璃球数量列表))```


9、编程实现:

某比赛有N(2≤N≤50)名选手参加,给定每名参赛选手的编号(1到N)和比赛得分(0≤得分≤100),请按照分数从高到低的顺序排序,如果分数相同就按照编号排序,编号小的排前边。

输入描述:

第一行输入一个正整数N(2≤N≤50),表示参赛人数

第二行开始,共输入N行,每行两个正整数,分别表示参赛选手的编号和比赛得分(0≤得分≤100),正整数之间以一个空格隔开

输出描述:

按照排序规则,输出N行,每行两个正整数,分别表示编号和得分,正整数之间以一个空格隔开


样例输入:

3
3 84
1 87
2 84

样例输出:

1 87
2 84
3 84

参考答案:br />```pythonN = int(input())scores = []for i in range(N):num, score = map(int, input().split())scores.append((num, score))scores.sort(key=lambda x: (-x[1], x[0]))for num, score in scores:print(f"num score")```


10、编程实现:

一条笔直的公路沿途有N(2≤N≤100)个充电站,包含起点和终点各一个。小明驾驶电动汽车要从公路的起点到达终点。

已知电动汽车充满电后可行驶的里程数D(10≤D≤10000),及N个充电站每相邻的两个充电站之间的距离,并且小明在起点第一次给电动汽车充满电。请帮助小明计算出最少充电几次才能从起点到达终点(需包含起点的第一次充电)。

注意

1)到达终点后不需要再充电;

2)每次充电都要充满。

例如:D = 10,N = 7,7个充电站之间的距离依次为1,3,6,8,1,4,最少需要充电3次。

第一次充电在起点(第1个充电站);

第二次充电在第4个充电站(此时行驶里程为10,刚好电量耗尽);

第三次充电在第6个充电站(此时在第二次充满电后行驶了9,剩余电量只能行驶1,距离下一充电站的距离为4,所以必须在此充电站充电)。

输入描述:

第一行输入两个正整数D(10≤D≤10000)和N(2≤N≤100),分别表示电动汽车充满电后可行驶的里程数和公路沿途充电站的个数,正整数之间以一个空格隔开

第二行输入N-1个正整数(1≤正整数≤100000),依次表示相邻两个充电站之间的距离,正整数之间以一个空格隔开

输出描述:

输出一个整数,表示电动汽车从公路的起点到达终点最少充电的次数,如果不能到达终点输出-1(需包含起点的第一次充电)


样例输入:

10 7
1 3 6 8 1 4

样例输出:

3

参考答案:```pythonN, D = map(int, input().split())distances = list(map(int, input().split()))total_distance = 0charge_times = 1for i in range(N-1):total_distance += distances[i]if total_distance > D:charge_times += 1total_distance = distances[i]if total_distance < D:print(-1)else:print(charge_times)```


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

创作类型:
原创

本文链接:第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年12月18日真题参考答案

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