万卷网> 蓝桥竞赛 >蓝桥Python > 2023年1月蓝桥杯蓝桥Python(STEMA)中/高级

2023年1月蓝桥杯蓝桥Python(STEMA)中/高级
STEMA 2023 2024-01-17 11:16:09 78

一、单选题

1.

执行以下代码,输出的结果是 (    ) 。

info = {
    '小蓝': {
        'like': ['钢琴', '吉他', '射箭'],
        'score': 100
    },
    '小青': {
        'like': ['画画', '爬山', '滑雪'],
        'score': 99
    }
}
print(info["小青"]["like"][1])
A.

画画

B.

爬山

C.

吉他

D.

99

2.

已知x = 3,执行语句x += 5后,x的值为(   )。

A.

3

B.

5

C.

8

D.

35

3.

下列选项中,对turtle.circle(50 , steps=6)语句,描述正确的是(   )。

A.

绘制一个半径为50像素的圆

B.

绘制一个半径为50像素的6个圆

C.

绘制一个半径为50像素的圆内接正六边形

D.

绘制一个半径为50像素的圆和一个正六边形

4.

下列关于Python函数的说法中,正确的是(   )。

A.

函数的定义必须在程序开头

B.

函数定义后需要调用才能执行

C.

函数体与关键字def必须左对齐

D.

函数必须有关键字return

5.

以下选项中,关于列表描述错误的是(   )。

A.

列表是不可变的数据类型

B.

列表中可以存放任意类型元素

C.

列表元素可以使用负整数下标引用

D.

列表是一个有序集合,没有固定大小

二、编程题

1.

编程实现:

将N(1<N<50)堆石子围成一个圆圈,已知每堆石子的数量,且石子的总数量能被N整除。请按照如下要求移动石子,使得N堆石子的数量变为相同。

要求:可以从每堆石子中拿取石子移动到它左右相邻的两堆石子堆中。

计算出要使得N堆石子的数量变为相同,至少需要移动多少颗石子。

例如:N = 3,3堆石子顺时针方向的数量依次为2、6、7。最少需要移动3颗石子,N堆石子的数量变为相同,每堆5颗。

第1次从第一堆石子中拿1颗移动到第一堆的石子中,此时3堆石子的数量依次为3、5、7;

第2次从第三堆石子中拿2颗移动到第一堆的石子中,此时3堆石子的数量依次为5、5、5。

输入描述:

第一行输入一个正整数N(1<N<50),表示石子的堆数

第二行输入N个正整数(1<正整数<100),表示顺时针方向每堆石子的原始数量,正整数之间以一个空格隔开

输出描述:

输出一个整数,表示要使N堆石子的数量变为相同,最少移动的石子数量,如果原始N堆石子数量相同,则输出0


样例输入:

3
2 6 7

样例输出:

3
2.

题目描述:

给定一个正整数N(100≤N≤999),交换N中任意两个数位上的数字获得一个新值,找到一种交换方式使得新值最大,并输出,如果交换后的新值都不大于N,则输出N。(只能交换一次)

例如:N=145,有三种交换方式,交换后的新值分别为415、541、154,其中交换后最大的新值为541,则输出541。

输入描述:

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

输出描述:

输出一个正整数,表示交换后的最大值


样例输入:

145

样例输出:

541
3.

编程实现:

给定两个正整数N和M(1<N<1000,1<M<1000),请计算出N与M的乘积。

输入描述:

第一行输入一个正整数N(1<N<1000)

第二行输入一个正整数M(1<M<1000)

输出描述:

输出一个正整数,表示N与M的乘积


样例输入:

2
3

样例输出:

6
4.

编程实现:

某公园有N(3≤N≤50)棵树排成一排,已知每棵树的高度。现要去掉一些树,使得剩下树的高度从左至右呈现先递增再递减的规律(即剩余的树中仅有一棵最高的树,且它左侧的所有树中后一棵树都要比前一棵树高,它右侧的所有树中后一棵树都要比前一棵树矮)

给出N棵树的高度(高度单位:m,1.0≤每棵树高度≤100.0,保留一位小数),请你计算出最少去掉几棵树才能使这排树呈现先递增再递减的规律,如果不能呈现则输出-1(只有递增或者只有递减都为不能呈现)。

例如:N=10,10棵树的高度从左到右依次为1.0、2.3、1.2、1.7、1.1、2.0、1.8、1.8、1.2、1.9。

要使这排树呈现先递增再递减的规律,最少去掉4棵树,去掉的编号分别为2、5、8、10。

剩余树的高度依次为1.0、1.2、1.7、2.0、1.8、1.2,最高树为2.0,其左侧树的高度依次为1.0、1.2、1.7、2.0,呈现递增趋势(从左至右且包含最高树);其右侧树的高度依次为2.0、1.8、1.2,呈现递减趋势(从左至右且包含最高树)。

输入描述:

第一行输入一个正整数N(3≤N≤50),表示这排树的数量

第二行输入N个数(1.0≤每个数≤100.0,保留一位小数),表示每棵树的高度,每个数之间以一个空格隔开

输出描述:

输出一个整数,表示最少去掉几棵树才能使这排树呈现先递增再递减的规律,如果不能呈现则输出-1


样例输入:

10
1.0 2.3 1.2 1.7 1.1 2.0 1.8 1.8 1.2 1.9

样例输出:

4
5.

编程实现:

有N(1≤N≤100)根绳子,已知每根绳子初始的长度(1≤长度≤1000)。每根绳子都可以在任意位置裁断。

请计算出小明最多可以剪成多少根长度为K(1≤K≤200)的绳子,如果不能剪成长度为K的绳子输出0。

例如:N = 4,4根绳子初始长度为2,3,4,10,K =3,最多可以剪成5根长度为3的绳子。

第一根不能剪成;第二根可以剪成1根;第三根可以剪成1根;第四根可以剪成3根。

输入描述:

第一行输入一个正整数N(1≤N≤100),表示原有绳子的根数

第二行输入N个正整数(1≤正整数≤1000),表示每根绳子的初始长度,正整数之间以一个空格隔开

第三行输入一个正整数K(1≤K≤200),表示需要剪出的绳子长度

输出描述:

输出一个整数,表示N根绳子中最多可以剪成多少根长度为K的绳子,如果都不能剪成长度为K的绳子则输出0


样例输入:

4
2 3 4 10
3

样例输出:

5
公众号
客服 反馈
顶部