蓝桥杯真题训练

学习内容:

  1. 掌握 python 单词分析
  2. 掌握 python 门牌制作
  3. 掌握 python 成绩分析
  4. 掌握 python 卡片
  5. 掌握 python 回文日期

实操分析:

案例一 单词分析

【问题描述】
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

【输入描述】
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。

【输出描述】
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序~~最小~~ 的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数
输入输出样例

示例 1
输入
lanqiao
copy
输出
a
2
运行限制
最大运行时间:1s
最大运行内存: 256M
【分析与解答】
统计单词中每个字母出现的次数用循环实现,首先定义一个变量来接收值的变化,如果有多个字母出现的次数相等,再使用循环统计字母出现的次数同样多的字母,将这些字母加入一个序列中,排序后首位就是最小的,输出字典序最小 的那个。
【运行结果】

import os
import sys

# 请在此输入您的代码
#输入代码
#统计字母
word=input() #输入的字母由Word变量接收
#统计单词中出现最多的字母
coun=0
for i in word:
  a=word.count(i)
  if a>=coun:
    coun=a
#多个字母出现次数相等,输出字典序最小的
g=[]
for j in word:
  if word.count(j)==coun:
    g.append(j)
g.sort()
print(g[0])
print(coun)

案例二 门牌制作

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝要为一条街的住户制作门牌号。

这条街一共有 2020位住户,门牌号从 1 到 2020 编号。

小蓝制作门牌的方法是先制作 0到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1个字符0、2个字符1、1个字符7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。

请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2

运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
for循环遍历所有数字,但是数字无法直接统计个数,要先转为字符串。
【运行结果】

import os
import sys

# 请在此输入您的代码
coun=0
for i in range(1,2021):
  coun += str(i).count('2')
print(coun)

结果为:624

案例三 成绩分析

【问题描述】
题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。

请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。

输入描述
输入的第一行包含一个整数 n,表示考试人数。

接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数

输入输出样例
示例
输入

7
80
92
56
74
88
100
0

输出
71%
43%

运行限制
最大运行时间:1s
最大运行内存: 256M
【运行结果】

import os
import sys

# 请在此输入您的代码
n=int(input())
lst=[int(input()) for i in range(n)]
#及格率=及格人数/总人数 * 100%
#优秀率=优秀人数/总人数 * 100%
#及格人数lst1
#优秀人数lst2
lst1=0
lst2=0
for i in range(0,n):
  if lst[i] >= 85:
    lst2 += 1
  if lst[i] >= 60:
    lst1 += 1
print('{}%'.format(round(lst1/n*100)))
print('{}%'.format(round(lst2/n*100)))

输出结果:
70%
60%

案例四 卡片

【问题描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。

小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 1 拼到多少。

例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,

但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。

现在小蓝手里有 0 到 9 的卡片各 2021 张,共 2021 张,请问小蓝可以从 1 拼到多少

提示:建议使用计算机编程解决问题。

运行限制
最大运行时间:1s
最大运行内存: 128M
【运行结果】

import os
import sys

# 请在此输入您的代码
coun=0
for i in range(10000000):
  coun+=str(i).count('1')
  if coun==2021:
    print(i)
    break

输出结果:
3181

案例五 回文日期

【问题描述】
题目描述
2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日

也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

输入描述
输入包含一个八位整数 NN,表示日期。

输出描述
输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

输入输出样例
示例
输入

20200202

输出

20211202
21211212

运行限制
最大运行时间:1s
最大运行内存: 256M
【运行结果】

import os
import sys
import datetime
# 请在此输入您的代码
date=input()
y=int(date[0:4]) # 将输入的日期转化为年月日的形式
m=int(date[4:6])
d=int(date[6:])
dd=datetime.date(y,m,d) # 将y,m,d转化为日期格式
flag=True # 输出一次回文日期
for i in range(9999999):
  dd=dd+datetime.timedelta(days=1)  # 日期增加1天
  strdd=str(dd).replace('-','') # 将日期转换为字符串的形式并将其中的-符号去掉
  if strdd==strdd[::-1]:
    if flag:
      print(strdd)
      flag=False
    if strdd[0]==strdd[2]==strdd[-1]==strdd[-3] and strdd[1]==strdd[3]==strdd[-2]==strdd[-4] :
      print(strdd)
      break

学习总结:

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 2 篇
  • 学习的 vlog 视频 1 个
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值