使用Python语言刷蓝桥杯历年真题


用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)

datatime的用法

试题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组试题基本上大多为送分题,虽然不知道我将要参加的第二届蓝桥杯会是什么一种情况,要是真就这难度那就好了,辣鸡只想搞一个省二以上


文章作者: 晓沐
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓沐 !
评论
 上一篇
“Bert论文笔记 “Bert论文笔记
Bert论文笔记首先放上论文的地址: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 背景介绍NLP中有一个比较重要的任务就是
2021-05-22
下一篇 
蓝桥杯Python算法训练 蓝桥杯Python算法训练
蓝桥杯Python组算法训练1 题目 1017: [编程入门]完数的判断 时间限制: 1Sec 内存限制: 128MB 提交: 23074 解决: 10991 题目描述 一个数如果恰好等于不包含它本身所有因子之和,这个数就称为”完数”。 例
2021-03-18 晓沐
  目录