第十三届蓝桥杯大赛青少组——中级组python真题

第 1 题 单选题

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

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

B.函数定义后,其中的程序就可以自动执行

C.函数定义后需要调用才会执行

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

 解析:python中函数定义在调用后才会执行,其他都错的,选C

        

第 2 题 单选题

十进制数55转换成十六进制是()。

A.110111

B.313

C.37

D.67

 解析:55%16=7,55//16=3  因此转换为16进制后为37选C        ,

第 3 题 单选题

下列方法中,哪一个可以随机生成一个实数()。

A.random()

B.randrange()

C.getrandbits()

D.randint()

解析:random() 产生一个(0,1)之间的实数,randrange()产生一个对应

区间的整数,getrandbits(k)产生一个不大于k位的整数,randint()产生一

个整数。选A

         

第 4 题 单选题

已知t=("lan”,“qiao”,“bei"),执行t[::-1]语句输出的结果是()。

A.("bei",“qiao',"lan")

B.[“bei”,“qiao",“lan"]

C.{"bei",“qiao",“lan"}

D.运行报错

解析:t[::-1]将元组中元素倒序,元组有3个字符串元素,因此选A

       

第 5 题 单选题

字符串的strip方法的作用是()。

A.删除字符串头尾指定的字符

B.删除字符串未尾的指定字符

C.删除字符串头部的指定字符

D.通过指定分隔符对字符串切片

解析:strip方法的知识考察,选A        

二、编程题

第1题 

题目描述

输入两个字符串s1和s2,然后将s1和s2拼接成一个字符串并输出。

例如:s1='ab',s2='cd',拼接成一个字符串为‘abcd'。

输入格式

第一行输入一个字符串s1

第二行输入一个字符串s2

输出格式

将s2拼接到s1的后边并输出

输入样例

ab

cd

输出样例

abcd

s1=input()
s2=input()
print(s1+s2)

第二题 

题目描述

给定一个正整数N,输出正整数N中各数位最大的那个数字,

例如:N=132,则输出3.

输入格式

输入一个正整数N

输出格式

输出正整数N中各数位最大的那个数字

输入样例

132

输出样例

3

解析:方法一:通过取余10的方法拆分数位,找出最大的;方法二:将数字转换成字符串,取字符串中最大的。

n=int(input())
print(max(str()))

第3题 

题目描述

小青带着一根长为80厘米的竹竿去摘苹果,当伸手够不到苹果会借助竹竿摘苹果(竹竿碰到苹果就算摘下)。在给定出小青伸手的高度N及每个苹果离地面的高度,请你帮助小青计算出最多能够摘到多少苹果。

例如:N=120,苹果高度分别为130,220,153,200,最多可以摘到3个苹果,高度为220的苹果即使使用竹竿也摘不到。

输入格式

第一行输入一个正整数N(120<=N<=200),表示小青伸手高度(单位:厘米)

第二行输入多个正整数,表示每个苹果距离地面的高度,正整数之间以一个英文逗号隔开(单位:厘米)

输出格式

输出一个整数,表示小青最多可以摘到的苹果数

输入样例

120

130,220,153,200

输出样例

3

l=int(input())+80
h=eval(input())
ans=0
for i in h:
    if i<=l:
        ans+=1
print(ans)

第4题 

题目描述

小马需要将N件物品从河的一岸搬运到河的另一岸,每次搬运的物品为1到3件。
请问小马将N件物品全部搬运过去有多少种方案。
例如:N=3,将3件物品全部搬运过去有4种方案:
方案一:第一次搬运1件,第二次搬运1件,第三次搬运1件:
方案二:第一次搬运1件,第二次搬运2件:
方案三:第一次搬运2件,第二次搬运1件:
方案四:一次搬运3件。

输入格式

输入一个正整数N,表示需要搬运的物品数

输出格式

输出将N件物品全部搬运过去有多少种方案

输入样例

3

输出样例

4

解析:一次可以搬1件,2件,3件,因此要搬k件可以有三类方法,先(k-1)然后1,或者先(k-2),然后2,或者先(k-3),然后3,用递推就可以了。

n=int(input())
a=[1,1,2]
for i in range(3,n+1):
    a[i]=a[i-1]+a[i-2]+a[i-3]
print(a[n])

第5题

题目描述

有一片海域划分为N*M个方格,具中有些海域已经被污梁(用0表示),有一些海域没被污染用1表示):
请问这片N*M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该海域上下左右被已污染的海域包围,且N*M以外的海域都为已被污染的海域)
例如:N=4,M:54*5的海域中,已被污染海域和设被污染的海域如下图:

 这块4*5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的的海域包围。

输入格式

第一行输入两个整数N和M,N表示矩阵方格的行,M表示矩阵方格的列,N和M之间以一个英文逗号隔开。

第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)。

输出格式

输出一个整数,表示N*M的海域中有几块是没被污染的独立海域。

解析:连通块模板题DFS解决。

def dfs(i,j):
    for o in range(4):
        x=i+dx[o]
        y=j+dy[o]
        if x>=0 and x<n and y>=0 and y<m and a[x][y]!=0:
            a[x][y]=0
            dfs(x,y)
dx=[0,0,1,-1]
dy=[1,-1,0,0]
ans=0
n,m=(int(x) for x in input().split())
a=[[int(x) for x in input().split()] for k in range(n)]

for i in range(n):
    for j in range(m):
        if a[i][j]!=0:
            dfs(i,j)
            ans+=1
print(ans)

 第6题

输入描述

第一行输入两个整数N和M(1≤N≤100,1≤M≤100),N表示矩阵的行数,M表示矩阵的列数,两个整数之间一个空格隔开

接下来输入N行,每行包括M个0或者1(0表示方格中没有奖品,1表示方格中有奖品),0或者1之间一个空格隔开

输出描述

输出一个整数,表示最多可获得的奖品数

样例输入

5 6

1 0 1 0 0 0

0 1 0 1 0 0

1 0 0 0 1 0

0 1 0 0 0 1

1 0 1 0 0 0

样例输出

4

解析:可以直接暴力,时间复杂度O(N*N*M*M)会超时,预处理二维前缀和,枚举一个起点,然后以这个起点找对角线,找到所有满足条件的对角线,每次找到一个终点,求这个矩形的数据和,如果数据和=正方形的边长,说明其他位置没有1,找到最大的答案即可,时间复杂度为O(N*M*N)。

n, m = (int(x) for x in input().split())
a = [[0 for x in range(m+1)]]
for i in range(n):
    b = [0] + [int(x) for x in input().split()]
    a.append(b)
# 预处理前缀和数组
s = [[0 for x in range(105)] for y in range(105)]
for i in range(1, n + 1):
    for j in range(1, m + 1):
        s[i][j] = s[i - 1][j] + s[i][j - 1] + a[i][j] - s[i - 1][j - 1]
def ss(c, d, e, f):
    # 求坐上角为cd,右下角为ef的正方形的数据和
    return s[e][f] - s[c - 1][f] - s[e][d - 1] + s[c - 1][d - 1]
def work(x, y):
    # 以(x,y)为上方,求解能找到的最大的答案
    # 往右下走t步
    t = 1
    kx = x + t
    ky = y + t
    while (kx <= n and ky <= m and a[kx][ky] == 1 and ss(x, y, kx, ky) == t + 1):
        t += 1
        kx = x + t
        ky = y + t
    res = t
    # 往左下走t步
    t = 1
    kx = x + t
    ky = y - t
    while (kx <= n and ky >= 1 and a[kx][ky] == 1 and ss(x, ky, kx, y) == t + 1):
        t += 1
        kx = x + t
        ky = y - t
    res = max(t,res)
    return res
ans=0
for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i][j]==1:
            if work(i,j)>ans:
                ans=work(i,j)
print(ans)

以上参考的微信公众号:JOY的课堂

  • 20
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 第十三届蓝桥杯大赛青少国赛python真题是一个关于电梯的问题。题目要求我们模拟一个电梯系统,根据乘客的请求,确定电梯的运行状态和楼层,最终输出总运行时间。 首先,我先定义了一个电梯类,其中包括电梯的当前楼层、运行状态、总运行时间等属性,并且编写了相应的初始化函数进行初始设置。 然后,我利用一个列表来表示乘客的请求列表,列表中每个元素都是一个元,包括请求的楼层和请求时间。通过遍历这个列表,我判断当前请求是否在电梯运行的楼层范围内。如果是,则不需要改变电梯的运行状态,只需要更新电梯的总运行时间。如果不是,则根据请求的楼层和电梯当前的楼层确定运行的方向,并且更新电梯的总运行时间。 最后,我输出了电梯的总运行时间。 这道题的难点在于正确判断电梯的运行状态和方向,并且根据不同情况进行相应的操作。我通过分析题目要求和思考,设计了合理的算法和逻辑,最终成功解决了问题。 通过这道题,我巩固了对Python语言的掌握,并且提高了编程和逻辑思维能力。这个比赛真题对于提高编程水平和培养创新能力来说是非常有益的,我会继续参加类似的比赛,不断提升自己。 ### 回答2: 第十三届蓝桥杯大赛青少国赛Python真题主要包括以下几个问题: 1. 判断一个数是否为素数。 在这个问题中,可以使用一个循环从2开始到该数的平方根,判断是否存在能够整除该数的因子。如果不存在,则该数为素数。 2. 模拟游戏角色的移动。 这个问题可以通过设定一个坐标系,然后记录游戏角色的位置和移动方向。根据给定的指令,改变角色的位置。可以使用单个变量来表示角色的位置,并根据不同的指令来更新角色的位置。 3. 求解整数序列的最大连续和。 在这个问题中,可以使用动态规划的思想来解决,设置一个变量max_sum表示当前的最大连续和,另一个变量tmp_sum表示当前子序列的和。遍历整个序列,如果tmp_sum加上当前元素大于0,则更新tmp_sum,并比较tmp_sum和max_sum的大小。 4. 判断一个IP地址是否合法。 IP地址由四个整数成,每个整数范围在0-255之间,且由点分隔。可以使用正则表达式来匹配IP地址的格式,并使用条件判断来判断每个整数是否在正确的范围内。 以上是对第十三届蓝桥杯大赛青少国赛Python真题的简要回答。具体的解题过程需要根据每个具体问题的要求和限制条件来进行分析和解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值