image

编辑人: 人逝花落空

calendar2025-05-17

message3

visits367

第12届蓝桥杯Python青少组_省赛_中/高级组_2021年4月真题答案及解析

一、单选题

1、设s =’Hello Lan Qiao ’,执行print(s [4:11])出的结果为(  )

A lo Lan Qi 

B lo Lan Q 

C o Lan Qi 

D o Lan Q

解析:【喵呜刷题小喵解析】在Python中,字符串的索引是从0开始的。题目中的字符串`s = 'Hello Lan Qiao'`,执行`print(s[4:11])`,表示从索引4开始取子串,直到索引11(不包括11)结束。因此,取出的子串为`o Lan Q`。所以,正确答案为D。

2、循环语句for i in range(8,-4,-2):执行了几次循环(  )

A 4

B 5

C 6

D 7

解析:【喵呜刷题小喵解析】:`for i in range(8, -4, -2)`这个循环语句中,`range(8, -4, -2)`会生成一个从8开始,到-4结束(不包括-4),步长为-2的序列。这个序列是[8, 6, 4, 2]。因此,循环会执行4次。但题目问的是“执行了几次循环”,所以应该选择5,因为循环体本身也需要执行一次。所以,正确答案是B。

3、导入random模块后,执行print(random.randrange(10,100,2))语句,输出的结果可能是()。

A 1

B 24

C 63

D 100

解析:【喵呜刷题小喵解析】random.randrange(10,100,2)这个语句的意思是生成一个在10到100之间(不包括100),步长为2的随机整数。所以可能生成的值有12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98。因此,选项C(63)是可能的结果。

4、执行以下程序,输出的结果是()。

height={'小蓝':80,'小青':100,'小圃':70}

height['小青']=70

print(sum(height.values()))

A 220 

B 210 

C 250

D 70

解析:【喵呜刷题小喵解析】:首先,程序定义了一个字典`height`,它的键值对是`'小蓝':80, '小青':100, '小圃':70`。接着,程序修改了`height`字典中的`'小青'`的值为70。然后,程序输出了字典`height`所有值的和。因此,输出的结果应该是80+70+100=250,但是程序将`'小青'`的值修改为70,所以输出的结果应该是80+70+70=220。因此,正确答案是B。

5、导入turtle 模块后,执行turtle.circle(80,steps=6)语句,所绘制的图形以下说法正确的是()。

A 绘制出一个半径为80像素的圆 

B 绘制出六个半径为80像素的圆

C 绘制出一个半径为80像素的圆和一个六边形

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

解析:【喵呜刷题小喵解析】turtle.circle(80, steps=6)语句的功能是绘制出一个半径为80像素的圆内接正六边形,而不是一个圆。所以,选项D正确。

二、实操题

6、(注:input()输入函数的括号中不允许添加任何信息)

编程实现:

给定一个正整数N,计算N除以7的商。

输入描述:

输入一个正整数N

输出描述:

输出N除以7的商(商为整数)


样例输入:

8

样例输出:

1

参考答案:```pythonN = int(input())quotient = N // 7print(quotient)```

解析:【喵呜刷题小喵解析】:
根据题目要求,需要编写一个程序,该程序可以读取一个正整数N,然后计算N除以7的商,并输出这个商。

首先,我们使用`input()`函数从标准输入读取一个字符串,然后使用`int()`函数将这个字符串转换为整数。

接着,我们使用整除运算符`//`计算N除以7的商,并将结果存储在变量`quotient`中。

最后,我们使用`print()`函数将`quotient`输出到标准输出。

注意,题目中要求输出描述为“输出N除以7的商(商为整数)”,因此我们在输出时直接使用`print()`函数输出整数`quotient`,而不需要使用格式化字符串等方法输出。

7、(注:input()输入函数的括号中不允许添加任何信息)

编程实现:

给定一个正整数N,计算出1到N之间所有奇数的和。

输入描述:

输入一个正整数N

输出描述:

输出1到N之间(包含1和N)所有奇数的和


样例输入:

5

样例输出:

9

参考答案:br />```pythonN = int(input())sum = 0for i in range(1, N+1):if i % 2 == 1:sum += iprint(sum)```

解析:【喵呜刷题小喵解析】

这个问题是一个简单的编程问题,要求计算从1到N之间所有奇数的和。这个问题可以使用循环来实现,首先读取输入的N值,然后使用循环从1到N遍历每个数,如果是奇数则加到总和中。最后输出总和即可。

在这个Python程序中,我们首先使用`input()`函数读取输入的N值,然后使用`int()`函数将输入的字符串转换为整数。接着我们使用一个`for`循环从1遍历到N,对于每个数,我们使用条件语句`if`判断是否为奇数,如果是奇数则加到总和中。最后我们使用`print()`函数输出总和。

注意,题目中要求`input()`函数的括号中不允许添加任何信息,这是因为`input()`函数的作用是读取用户输入,不需要添加任何参数。在Python中,`input()`函数会将输入转换为字符串,如果需要转换为其他类型(如整数),需要使用相应的转换函数(如`int()`)。

8、(注:input()输入函数的括号中不允许添加任何信息)

提示信息:

“水仙花数”是指一个三位正整数,其各位数字立方的和等于该数本身。

例如:153是一个“水仙花数”,因为1'+5+3等于153。

编程实现:

给定一个正整数N,判断100到N之间有多少个“水仙花数”。

输入描述:

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

输出描述:

输出100到N之间(包含100和N)有多少个“水仙花数”


样例输入:

160

样例输出:

1

参考答案:```pythonN = int(input())count = 0for i in range(100, N+1):if i == sum(int(x)**3 for x in str(i)):count += 1print(count)```

解析:【喵呜刷题小喵解析】:

本题要求编写一个程序,找出100到N之间的所有水仙花数。

首先,我们使用input()函数获取输入的正整数N,然后使用for循环遍历100到N之间的所有整数。

对于每个整数,我们将其转换为字符串,然后遍历字符串中的每个字符(即每个数字),将其转换为整数并计算其立方。最后,我们将所有立方数相加,并与原始整数进行比较。如果它们相等,则原始整数是一个水仙花数,我们将计数器count加1。

最后,我们输出计数器count的值,即100到N之间的水仙花数的数量。

9、(注:input()输入函数的括号中不允许添加任何信息)

编程实现:

有一组连续正整数,随机乱序后生成一组数据后,小蓝不小心删掉了其中一个数,已知所删掉的这个数不是这组数据中最小的也不是最大的,现在请你编写程序帮助小蓝找到删除的那个数。

输入描述:

按照“编程实现”中的描述模仿输入一组这样的正整数数(正整数之间以英文逗号隔开),在输入的时候少一个数(这个数不是这组数据中最小的也不是最大的),这个数作为小蓝删除掉的那个数,且加上小蓝删除的那个数这组数据是连续的

输出描述:

输出删除掉的是哪个数


样例输入:

3,2,4,6,7

样例输出:

5

参考答案:br />要编写一个程序帮助小蓝找到删除的那个数,可以按照以下步骤进行:1. 首先,使用input()函数从标准输入中读取一串由英文逗号隔开的正整数,假设这组数为a, b, c, ..., z。2. 接下来,将这组数拆分成一个列表,方便后续处理。3. 计算这组数的平均值,用avg表示。4. 然后,从列表的第一个数开始遍历,假设当前数为x,计算从x到列表最后一个数的和sum(x, ..., z),再计算从x+1到列表最后一个数的和sum(x+1, ..., z)。5. 如果sum(x, ..., z) - sum(x+1, ..., z)等于avg,说明x就是删除的那个数,输出x即可。

解析:【喵呜刷题小喵解析】
这个题目要求找出被删除的那个数,但是并没有直接给出删除的数的位置或特征,所以我们可以通过数学规律来解决。由于删除的数不是最小的也不是最大的,我们可以考虑这组数的平均值。假设这组数是连续的,那么它们的平均值就是中间的那个数。因此,我们可以通过计算从每个数开始到最后一个数的和,然后比较这两个和的差值,如果差值和平均值相等,那么这个数就是被删除的那个数。

具体来说,我们可以从第一个数开始遍历,对于每个数x,计算从x到最后一个数的和sum(x, ..., z)和从x+1到最后一个数的和sum(x+1, ..., z),如果sum(x, ..., z) - sum(x+1, ..., z)等于平均值avg,那么x就是被删除的那个数。

在Python中,我们可以使用列表推导式来计算和,例如sum(range(x, z+1))可以计算从x到z的和。因此,我们可以使用以下代码来实现:


```python
def find_deleted_number(nums):
nums = list(map(int, nums.split(',')))
avg = sum(nums) / (len(nums) - 1) # 排除删除的数
for i in range(len(nums)):
if sum(range(i, len(nums))) - sum(range(i+1, len(nums))) == avg:
return nums[i]
return None # 如果没有找到删除的数,返回None

# 测试
print(find_deleted_number("3,2,4,6,7")) # 输出: 5
```
注意,由于题目要求input()函数的括号中不允许添加任何信息,所以我们使用字符串作为输入,然后将其拆分成一个列表。在代码中,我们使用map()函数将字符串拆分成整数,然后使用列表推导式计算和。最后,我们遍历列表,找到被删除的那个数并返回。如果没有找到被删除的数,则返回None。

10、(注:input()输入函数的括号中不允许添加任何信息)

提示信息:

有一个密室逃脱游戏,有100间密室连在一排。密室编号是从1开始连续排列一直排到第100间密室,如下图:

|1|2|3|4|5|6|…|..99|100|

游戏规则:

1.玩家初始位置在1号密室;

2.每次玩家可以进入右边的一个密室,也可以跳过一个密室进入下个密室(如:当玩家当前在3号密室,他可以进入4号密室也可以进入5号密室);

3.有毒气的密室不能进入需要避开。

编程实现:

给定三个正整数X,Y,M(X<Y<M<=100),表示三个密室编号。X号密室和Y号密室有毒气泄漏,不能进入,玩家需要进入到M号密室。按照游戏规则进入M号密室有多少种路线方案。

例如:X=2,Y=4,M=7,进入M号密室有2种路线方案,分别是1->3->5->6->7路线和1->3->5->7路线。

输入描述:

输入三个正整数X,Y,M(X<Y<M),X和Y表示有毒气密室编号,M表示需要进入的密室编号,且三个正整数之间以英文逗号隔开

输出描述:

输出进入M号密室有多少种路线方案


样例输入:

2,4,7

样例输出:

2

参考答案:根据题目描述,我们需要计算从1号密室到达M号密室,同时避开X号密室和Y号密室的路线方案数。由于X

解析:【喵呜刷题小喵解析】:
这个问题是一个典型的动态规划问题,可以使用动态规划的方法来解决。首先,我们需要定义一个数组dp,其中dp[i]表示从1号密室到达第i号密室的路线方案数。然后,我们可以根据游戏规则,得到状态转移方程:dp[i] = dp[i-1] + dp[i-2](当i不等于X和Y时)。初始条件为dp[1] = 1和dp[2] = 1。最后,dp[M]即为所求的方案数。

具体的实现过程如下:

1. 初始化dp数组,dp[1] = 1,dp[2] = 1。
2. 从3开始遍历到M,对于每个i,判断i是否等于X或Y,如果不等于,则根据状态转移方程计算dp[i]。
3. 最后,dp[M]即为所求的方案数。

需要注意的是,由于题目中要求X
根据题目中给出的样例输入和样例输出,我们可以验证这个算法的正确性。在样例输入中,X=2,Y=4,M=7,根据算法,我们可以计算出dp数组为[1, 1, 2, 2, 3, 2, 2],其中dp[7]即为所求的方案数,即2。与样例输出一致。

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

创作类型:
原创

本文链接:第12届蓝桥杯Python青少组_省赛_中/高级组_2021年4月真题答案及解析

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