当前位置:   article > 正文

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

第十三届蓝桥杯大赛青少组——中级组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

  1. s1=input()
  2. s2=input()
  3. print(s1+s2)

第二题 

题目描述

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

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

输入格式

输入一个正整数N

输出格式

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

输入样例

132

输出样例

3

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

  1. n=int(input())
  2. print(max(str()))

第3题 

题目描述

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

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

输入格式

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

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

输出格式

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

输入样例

120

130,220,153,200

输出样例

3

  1. l=int(input())+80
  2. h=eval(input())
  3. ans=0
  4. for i in h:
  5. if i<=l:
  6. ans+=1
  7. 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,用递推就可以了。

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

第5题

题目描述

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

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

输入格式

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

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

输出格式

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

  1. 解析:连通块模板题DFS解决。
  2. def dfs(i,j):
  3. for o in range(4):
  4. x=i+dx[o]
  5. y=j+dy[o]
  6. if x>=0 and x<n and y>=0 and y<m and a[x][y]!=0:
  7. a[x][y]=0
  8. dfs(x,y)
  9. dx=[0,0,1,-1]
  10. dy=[1,-1,0,0]
  11. ans=0
  12. n,m=(int(x) for x in input().split())
  13. a=[[int(x) for x in input().split()] for k in range(n)]
  14. for i in range(n):
  15. for j in range(m):
  16. if a[i][j]!=0:
  17. dfs(i,j)
  18. ans+=1
  19. 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)。

  1. n, m = (int(x) for x in input().split())
  2. a = [[0 for x in range(m+1)]]
  3. for i in range(n):
  4. b = [0] + [int(x) for x in input().split()]
  5. a.append(b)
  6. # 预处理前缀和数组
  7. s = [[0 for x in range(105)] for y in range(105)]
  8. for i in range(1, n + 1):
  9. for j in range(1, m + 1):
  10. s[i][j] = s[i - 1][j] + s[i][j - 1] + a[i][j] - s[i - 1][j - 1]
  11. def ss(c, d, e, f):
  12. # 求坐上角为cd,右下角为ef的正方形的数据和
  13. return s[e][f] - s[c - 1][f] - s[e][d - 1] + s[c - 1][d - 1]
  14. def work(x, y):
  15. # 以(x,y)为上方,求解能找到的最大的答案
  16. # 往右下走t步
  17. t = 1
  18. kx = x + t
  19. ky = y + t
  20. while (kx <= n and ky <= m and a[kx][ky] == 1 and ss(x, y, kx, ky) == t + 1):
  21. t += 1
  22. kx = x + t
  23. ky = y + t
  24. res = t
  25. # 往左下走t步
  26. t = 1
  27. kx = x + t
  28. ky = y - t
  29. while (kx <= n and ky >= 1 and a[kx][ky] == 1 and ss(x, ky, kx, y) == t + 1):
  30. t += 1
  31. kx = x + t
  32. ky = y - t
  33. res = max(t,res)
  34. return res
  35. ans=0
  36. for i in range(1,n+1):
  37. for j in range(1,m+1):
  38. if a[i][j]==1:
  39. if work(i,j)>ans:
  40. ans=work(i,j)
  41. print(ans)

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1013523
推荐阅读
相关标签
  

闽ICP备14008679号