赞
踩
Python蓝桥杯比赛历年真题–第14届蓝桥杯省赛真题
Python中蓝桥杯算是含金量和难度最大的比赛之一,网上可以找到不少真题,不过要么字体模糊要么要钱解锁,而且大都是没答案和解析的,给学习者造成很大困扰。因此本文档打算整理历年STEMA、省赛、国赛真题卷和解析,供大家学习参考。
答案:A
解析:使用“+”可以连接字符串,故答案为A。
答案:B
解析:str()为字符型,int()为整型,float()为字符型,list()为列表,故答案为B。
答案:A
解析:range()函数参数的随机数包含2,不包含20,步长为2即偶数,故答案为A。
答案:D
解析:sorted()方法会返回一个新的列表,所以为list类型,故答案为D。
答案:Python语言中,可以使用复数对象的real属性来获取复数的实部,使用复数对象的imag属性来获取复数的虚部,所以D错,故答案为D。
【参考程序】
n=int(input())
print(n+n)
【参考程序】
s=input()
print(s[0]+s[-1])
【参考程序】
# 导入itertools库中的combinations函数 from itertools import combinations # 定义一个函数,用于检查一个整数是否为质数 def is_prime(x): if x<2 : return False for i in range(2,int(x**0.5+1)): if x%i==0 : return False return True # 接收用户的三条输入:一个整数n,一个逗号分隔的整数列表ls,以及一个整数k n=int(input()) ls=list(map(int,input().split(','))) k=int(input()) # 用combinations函数生成ls中长度为k的所有子集组合,并计算它们的和,并将不同的和存储在一个set中。 s=set() for i in combinations(ls,k): s.add(sum(i)) # 计算有多少个非质数和存在于set中,保存结果在ans2中 ans1=len(s) ans2=0 for i in s: if not is_prime(i): ans2+=1 # 打印输出两个逗号分隔的数字,它们分别是非重复和的数量和不是质数的和的数量 print("{},{}".format(ans1,ans2)) # 导入itertools库中的combinations函数 from itertools import combinations # 定义一个函数,用于检查一个整数是否为质数 def is_prime(x): if x<2 : return False for i in range(2,int(x**0.5+1)): if x%i==0 : return False return True # 接收用户的三条输入:一个整数n,一个逗号分隔的整数列表ls,以及一个整数k n=int(input()) ls=list(map(int,input().split(','))) k=int(input()) # 使用generator表达式生成ls中长度为k的所有子集和,并将它们存储在set中。 s=set(sum(i) for i in combinations(ls,k)) # 统计set中非质数的数量并将结果保存在ans2中 ans1=len(s) ans2=sum(1 for i in s if not is_prime(i)) # 打印输出两个逗号分隔的数字,它们分别是非重复和的数量和不是质数的和的数量 print("{},{}".format(ans1,ans2))
【参考程序】
# 接收用户输入一个整数n,以及逗号分隔的x和y值 n=int(input()) x,y=map(int,input().split(',')) # 生成一个(n+1)x(n+1)的二维列表,初始值全部为0,并将第一个元素设为1。 my_list=[[0 for i in range(n+1)] for j in range(n+1)] my_list[1][1]=1 # 使用杨辉三角算法计算my_list中的值 for i in range(2,n+1): for j in range(1,i+1): my_list[i][j]=my_list[i-1][j-1]+my_list[i-1][j] # 计算ans1作为x,y处的杨辉三角值 ans1=my_list[x][y] # 计算ans2作为第y列的所有值之和 ans2=0 for i in range(1,n+1): ans2+=my_list[i][y] # 打印输出两个逗号分隔的数字,分别代表x,y处的杨辉三角值和第y列的所有值之和 print("{},{}".format(ans1,ans2))
【参考程序】
#接收墙的列数N和每列砖块数量列表1s N=int(input()) ls = list(map(int,input().split())) #初始化最大矩形面积result和单调栈stack result =0 stack =[-1] #遍历每列砖块 for i in range(N): #当前单调栈中的所有列的高度都不高于当前列,生成像“0111200222”的序列 while stack[-1]!=-1 and ls[stack[-1]]>= ls[i]: h= ls[stack.pop()] #弹出高度h w=i- stack[-1]-1 #从之前的位置到当前位置可以形成一个宽为w,高为h的矩形 result =max(result,h*w) #更新最大值 # #将当前列的索引号入栈 stack.append(i) #处理剩下的单调栈中的列 while stack[-1]!= -1: h=ls[stack.pop()] #从之前的位置到尾端可以形成一个宽为w,高为h的矩形 w=len(ls)-stack[-1]-1 result =max(result,h*w) print(result)
#读取输入数据 # 房间数量 n = int(input()) rooms =[] #记录每个房间内的传送门编号 for i in range(n): rooms.append(list(map(int,input().split(',')))) a,b= map(int,input().split('')) # 目标房间A和B #构建每个传送门所连接房间的关系表#f传送门编号:可到达的房间列表] gates ={} #传送门编号:可到达的房间列表] for i in range(n): for gate in rooms[i]: if gate not in gates: gates[gate] = [] gates[gate].append(i) print(gates) #使用BFS搜索,从房间A寻找到达房间B的最短路程 #起点A的房间编号入队列 queue =[a-1] dist =[-1]*n#记录每个房间到起点A的距离初始化为-1 dist[a-1]=0 # 起点A到自身的距离为0 while queue: u= queue.pop(8) for gate in rooms[u]: for v in gates[gate]:#如果该房间还没有被访问过 if dist[v]== -1: dist[v]= dist[u]+ 1 if v == b-1:#如果已经找到目标房间B,则立即返回最短路程 print(dist[v]) exit() queue.append(v) #如果队列为空还没有找到目标房间B,则说明无法到达 print(-1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。