用Python来刷蓝桥杯历年真题吧
其实看这发布时间就知道应该是就是考前抱佛脚考前演练
11届蓝桥杯 Python组
11届是蓝桥杯第一次开Python赛道,之前刷题都是按照C/C艹组的难度来刷的题目
看看第一届Python组会有多难吧
试题A :门牌制作
【问题描述】
小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
count_n=0
for i in range(1,2021):
j=str(i)
count_n+=j.count('2')
print(count_n)
#624
试题 B: 寻找 2020
【问题描述】
小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找
到这个数字矩阵中有多少个 2020 。
小蓝只关注三种构成 2020 的方式:
• 同一行里面连续四个字符从左到右构成 2020。
• 同一列里面连续四个字符从上到下构成 2020。
• 在一条从左上到右下的斜线上连续四个字符,从左上到右下构成 2020。
例如,对于下面的矩阵:
220000
000000
002202
000000
000022
002020
一共有 5 个 2020。其中 1 个是在同一行里的,1 个是在同一列里的,3 个
是斜线上的。
小蓝的矩阵比上面的矩阵要大,由于太大了,他只好将这个矩阵放在了一个文件里面,在试题目录下有一个文件 2020.txt,里面给出了小蓝的矩阵。
请帮助小蓝确定在他的矩阵中有多少个 2020。
文件2020.txt找不到了,所以大概的写了用例的解决代码。找到2020.txt其实只要改下for循环的长度就可以了。
count=0
with open('2020.txt') as f:
L=f.readlines()
for i in L:
count+=i.count("2020")
len_col=len(L[0])
len_row=len(L)
for j in range(len_row-3):
for i in range(len_col):
if L[j][i]=='2' and L[j][i+1]=='0' and L[j][i+2]=='2' and L[j][i+3]=='0' :
count+=1
for i in range(len_col):
for j in range(len_row-3):
if L[j][i]=='2' and L[j+1][i]=='0' and L[j+2][i]=='2' and L[j+3][i]=='0' :
count+=1
#最重点的一步来了,
for i in range(len_col-3):
for j in range(len_row-3):
if L[j][i] == '2' and L[j + 1][i+1] == '0' and L[j + 2][i+2] == '2' and L[j + 3][i+3] == '0':
count += 1
print(count)
#20915
#很奇怪,列用count来找和一个个匹配结果不一样
试题C:跑步锻炼
import datetime
a=datetime.date(2000,1,1)
b=datetime.date(2020,10,1)
sub=datetime.timedelta(days=1)
c=1
while a<=b:
if a.day==1 or a.weekday()==1:
c+=2
else:
c+=1
a+=sub
print(c)
试题D:蛇形填数
找规律的题,建议手写找出规律后用python计算
试题F:成绩统计
送分题就不打了
试题G:单词分析
白给题又一道
L=input()
c=0
max=0
for i in L:
c=L.count(i)
if c>max:
max=c
j=i
print(j)
print(max)
试题H:数字三角形
比上面两个有难度,但还是一道送分的题
n=int(input())
m=[]
for i in range(n):
m.append(list(map(int,input().split())))
print(m)
for i in range(n):
for j in range(i):
m[i][j]+=max(m[i-1][j-1],m[i-1][j])
if(n%2==0):
print(max(m[n-1][n//2],m[n-1][n//2-1]))
else:
print(m[n-1][n//2])
试题I:平面切分
平面切分,不会写,空了
抄来的思路:
每有一条平行线则平面+1,每条线每和其他线产生一个交点,则新增平面数=产生交点数+1
初版代码先放这(提供下思路,后面还会修改)
def px(a1,a2,b1,b2):
if(a1==a2 and b1!=b2):
return 1
else:
return 0
def xj(a1,a2):
if(a1!=a2):
return 1
else:
return 0
n=int(input())
a=[0]*n
b=[0]*n
x=[0]*n
y=[0]*n
s=2
point=0
for i in range(n):
a[i],b[i]=map(int,input().split())
for i in range(n):
if(i>0):
for j in range(i):
if(px(a[i],a[j],b[i],b[j])):#如果平行则平面+1
s+=1
elif(xj(a[i],a[j])):
x[i]=(b[i]-b[j])/(a[j]-a[i])
y[i]=a[i]*x[i]+b[i]
if(x[i]==x[j] and y[i]==y[j]):
point+=1
s+=point+1
print(s)
emmmmm总结一下,第一次开的python组试题基本上大多为送分题,虽然不知道我将要参加的第二届蓝桥杯会是什么一种情况,要是真就这难度那就好了,辣鸡只想搞一个省二以上