第十三届青少年蓝桥杯大赛python省赛题
|
15页
|
580人阅读
|
5人下载
内容正文:
第十三届第一次省赛(4 月)真题
一:下列二进制中最大数是()
A 110
B 1010
C 1100
D 1001
二:以下方法中,不是对文件读操作的是()
A readline()
B readlines()
C readtext()
D read()
三:以下对 turtle 库中函数描述正确的是()
A goto()函数设置当前画笔移动到原点位置
B pensize()函数设置画笔的移动速度
C setup()函数定义窗体的大小和相对位置
D hideturtle()函数是将海龟显示
四 以下选项中,对 random.uniform(a,b)语句表达正确的是()
A 随机生成一个 a到 b之间的整数
B 随机生成一个 a到 b之间的浮点数
C 随机生成一个 a到 b之外的整数
D 随机生成一个 a到 b之外的浮点数
五 下列表达式在遍历字典 d时,变量 x代表字典值是()
A for x in d :
B for x in d.keys() :
C for x in d.items() :
D for x in d.values() :
答案:1C 2C 3C 4B 5D
第十三届省赛 4 月第一场操作题第一题(初中高级组均要考)
编写程序:统计 1到 N之间所有正整数中个位数为零的有几个。
例如:N=21,1到 21之间所有正整数中个位数为零的数有 2 个,分别为:10,20。
输入描述:
输入一个正整数 N
输出描述:
输出 1到 N 之间(包含 N)所有正整数中个位数为
零的有几个
输入示例:
21
输出示例:
2
第一题源代码
n = int(input())
cnt = 0
for i in range(1,n+1):
if str(i)[-1] == "0":
cnt += 1
print(cnt)
第十三届省赛 4 月第一场操作题第二题(初中高级组均要考)
编写程序:输入多个英文单词(单词都为小写字母),然后按字典顺序排序输出 。
注:单词首字母相同时就比较第二个字母,以此类推。
输入描述:
输入多个由小写字母组成的英文单词,单词之间以一
个英文逗号隔开
输出描述:
按字典顺序排序输出 ,且单词之间以一个英文逗号隔开
输入示例:
python,hello,world
输出示例:
hello,python,world
第二题源代码
ls = list(map(str,input().split(",")))
ls.sort()
print(",".join(ls))
第十三届省赛 4 月第一场操作题第三题(初中高级组均要考)
编写程序:小蓝和小青在玩积木搭建游戏,具体玩法如下:
小蓝报一个数字 N,代表高楼的高度,小青则需要使用最少的积木搭建出高度大于 N的高楼。
给出小蓝所报出的数字 N,及已有积木块每一块的高度,请你帮助小青找出最少需要多少块积木可以搭建出高度大于 N的高楼。例如:N=12,
已有 4个积木块的高度分别为 4,7,8,4。则最少需要 2块积木,可以使搭建的高楼高度大于 12,2块积木为 7和 8。
输入描述:
第一行输入一个正整数 N,表示小蓝报出的数字
第二行输入多个正整数,表示已有积木块每一块的高
度,正整数之间以一个英文逗号隔开。(要求所有正整
数之和大于 N)
输出描述:
输出最少需要使用多少块积木,可以搭建出高度大于 N的高楼
输入示例:
12
4,7,8,4
输出示例:
2
第三题答案
n = int(input())
ls = list(map(int,input().split(",")))
ls.sort(reverse = True)
print(ls)
s = 0
for i in range(len(ls)) :
if sum(ls[:i]) > n :
print(sum(ls[:i]) )
print(i)
break
第十三届省赛 4 月第一场操作题第四题(初中高级组均要考)
题目描述:N 个小朋友围成一圈(N≤60),并按照顺序进行编号(编号 1 到 N),然后从编号为 1 的小朋友开始持续报数,当报到的数字中
含 3或者数字是 3的倍数的小朋友,不能报数字而是报“过”(例如 3,6,13,31这些数字都报“过”)。
一次游戏中,小朋友们玩的不亦乐乎,突然有小朋友发现前边报过的数字中已经有报错的,而后边小朋友还在继续报数。请你帮助小朋友
找出第一次报错的小朋友是编号几。
例如:有 3 个小朋友,编号为 1,2,3。编号 1的小朋友报 1、编号 2的小朋友报 2、编号 3的小朋友报“过”、编号 1的小朋友报 4、编号
2 的小朋友报 5、编号 3的小朋友报 6、编号 1的小朋友报 7;此时第一次报错的小朋友为编号 3。(因为编号 3的小朋友应该报“过”时,
报成了“6”,而“6”是 3的倍数)
输入描述:
第一行输入一个正整数 N,表示小朋友的人数
第二行输入一组有错的报数序列(使用“0”表示含 3
或者是 3的倍数的数字),序列元素之间以一个英文逗
号隔开
输出描述:
输出第一次报错的小朋友是编号几
输入示例:
3
1,2,0,4,5,6,7
输出示例:
3
第四题源代码
n = int(input())
ls = list(map(int,input().split(",")))
cnt = 0
for i in range(1,len(ls)+1):
if "3" in str(i) or i%3 ==0 :
if ls[i-1] != 0:
if i%n == 0:
print(n)
else:
print(i%n)
break
else:
if ls[i-1] != i :
print(i%n)
break
第十三届省赛 4 月第一场操作题第五题(初中高级组均要考)
题目描述:编程实现:
有 N 个正整数,现对 N 个正整数进行不同方式的排列,每次排列后都会按照以下规则进行一次计算,聪明的小蓝发现,排列方式不同,最
后计算出的结果也不相同。
计算规则:
第一次:第一个数乘以第二个数乘以第三个数,结果记录为 M(1);第二次:第二个数乘以第三个数乘以第四个数,结果记录为 M(2);第三
次:第三个数乘以第四个数乘以第五个数,结果记录为 M(3);…第 N-2 次:第 N-2个数乘以第 N-1个数乘以第 N个数,结果记录为 M(N-2)。
最后计算 M(1)+M(2)+M(3)......M(N-2)的数值。找出一种排列方式使这个数值最大。
例如:N=4,4个正整数分别为 1,2,3,4,那么排列方式就会有 24种:其中排列方式为 1,3,4,2时,按照规则计算 2次:1*3*4=12,
3*4*2=24;乘积相加:12+24=36这种排序方式是所有乘积相加的数值最大,为 36。
输入描述:
输入 N个正整数(3≤N),正整数之间一个英文逗号隔
开
输出描述:
找出所有乘积相加的数值最大的排列方式,并输出数值
输入示例:
1,2,3,4
输出示例:
36
第五题代码
ls = list(map(int,input().split(",")))
def permute(nums,solution = []):
if not nums:
res.append(solution)
return
for i in range(len(nums)):
newSolution = solution + [nums[i]]
newList = nums[0:i]+nums[i+1:]
permute(newList, newSolution)
res = []
permute(ls)
max_value = 0
for l in res:
s = 0
for i in range(len(l)-2):
s += l[i]*l[i+1]*l[i+2]
max_value = max(s,max_value)
print(max_value)
第十三届省赛 4 月第一场操作题第六题(中高级组考,初级不考)
题目描述:有一块农田被划分为 N*M 块,农作物和杂草分布生长在农田中,其中农作物使用大写字母“R”表示,杂草使用大写字母“X”
表示。请计算出农田中有几块独立的农作物区域(独立的农作物区域指该区域上下左右都被杂草围住,且 N*M以外的区域都是杂草)。
例如:N=4,M=4,4*4 的农田中农作物和杂草分布如右下图:
这块 4*4 的农田中有 3块独立的农作物区域(红色的 3部分)。
输入描述:
第一行输入两个整数 N 和 M(1≤N≤100,1≤M≤100),
N 表示农田的行数,M表示农田的列数,且两个正整数
之间以一个英文逗号隔开
接下来的 N 行每行包括 M个字符(字符只能为 R或 X),
R 表示农作物,X表示杂草,字符之间以一个英文逗号
隔开
输出描述:
输出一个整数,表示 N*M的农田中有几块独立的农作物区域
输入示例:
4,4
R,R,R,X
R,X,R,X
X,X,X,R
R,X,X,X
输出示例:
3
第六题答案
n,m = eval(input())
ls = []
cnt = 0
ls.append(["X" for i in range(m+1)])
for i in range(n):
l = list(map(str,input().split(",")))
ls.append(["X"]+l)
for i in range(1,n+1):
for j in range(1,m+1):
if ls[i][j] == "R" :
ls[i][j] = -1
if ls[i-1][j] == -1 or ls[i][j-1] == -1 :
continue
else:
cnt += 1
print(cnt)
资源预览图