第十一届届蓝桥杯python组做题笔记
菜鸡一枚,如有错误可在评论区指正,不胜感激
个别难题做不出来可能就放弃了
PS:感谢大佬域外风雪的文章给我提供了很多题目的思路
A:门牌制作
手算也行就是累点,或者用列表排序做
s=0#A:制作门牌
for i in range(2021):
s+=str(i).count('2')
print(s)#624
B:寻找2020
文件在这2020.txt
f=open('./2020.txt')#B:寻找2020
len=len(f.readline())-1
f.close()#先初始化一遍,不然下一个readline()会从第二行开始
s=0
f=open('./2020.txt')
m=[[0]*300 for _ in range(300)]
a=f.readlines()
for i in range(len):
for j in range(len):
m[i][j]=list(a[i])[j]
for i in range(len):
for j in range(len):
if(j+3<300):
if(m[i][j]=='2' and m[i][j+1]=='0' and m[i][j+2]=='2' and m[i][j+3]=='0'):
s+=1
if(i+3<300):
if(m[i][j]=='2' and m[i+1][j]=='0' and m[i+2][j]=='2' and m[i+3][j]=='0'):
s+=1
if(i+3<300 and j+3<300):
if(m[i][j]=='2' and m[i+1][j+1]=='0' and m[i+2][j+2]=='2' and m[i+3][j+3]=='0'):
s+=1
f.close()
print(s)#16520
C:跑步锻炼
我一开始还自己写闰年判断函数,结果发现python居然有datetime这种好东西
import datetime #C:跑步训练
a=datetime.date(2000,1,1)
b=datetime.date(2020,10,1)
days=datetime.timedelta(days=1)
s=0
while(a<=b):
if(a.day==1 or a.weekday()==0):
s+=2
else:
s+=1
a+=days
print(s)#8879
D:蛇形填数
可以用Excel暴力排(费时费力)
也可以找规律,容易看出第n个中间的数是第n-1个数加上4*(n-1)
算法就不会了…
m=[0]*20
m[0]=1
for i in range(1,20):
m[i]=m[i-1]+4*i
print(m[19])#761
F:成绩统计
白给题
n=int(input())#F:成绩统计
a=0
b=0
for i in range(n):
s=int(input())
if s>=60:
a+=1
if s>=85:
b+=1
print(str(round(a/n*100))+'%')
print(str(round(b/n*100))+'%')
G:单词分析
白给题+1
word=list(input())#G:单词分析
s=0
for i in word:
if(s<word.count(i)):
s=word.count(i)
max=i
print(max)
print(s)
H:数字三角形
最终向左和向右的次数不能超过1,也就是最后一个数要么在中间要么再中左或中右的位置
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)