python_蓝桥杯刷题记录_笔记_全AC代码_入门3

前言

        记录我的解法以及笔记思路,谢谢观看。

题单目录

1.P2141 [NOIP2014 普及组] 珠心算测验

2.P1567 统计天数

3.P1055 [NOIP2008 普及组] ISBN 号码

4.P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

5.P1308 [NOIP2011 普及组] 统计单词数

6.P1047 [NOIP2005 普及组] 校门外的树

7.P1046 [NOIP2005 普及组] 陶陶摘苹果

8.P1553 数字反转(升级版)

9.P1598 垂直柱状图


1.P2141 [NOIP2014 普及组] 珠心算测验

        这一道题我是有参考网上的一个大佬的思路来的,但是那个大佬的代码只有两行,很显然我现在的能力达不到就写成了我自己能够理解的样子。

        那python有一个容器是集合,关于python中集合的定义跟数学其实差不多,第一次的写的时候没有注意到题目中说得加数与被加数要不相同,所以无法通过。

        然后我又开始一直纠结怎么解决,增加了好多判断条件,然后看到大佬直接用集合就可以解决了,所以这个方法一定要记住。

        其次,这个大佬还用到了集合的一个函数方法,就是交集,总之思路真的很绝。

intersection() 方法:

        用于返回两个或更多集合中都包含的元素,即交集。

intersection() 方法语法:

        set.intersection(set1, set2 ... etc)

n = int(input())
l = set(map(int,input().split(' ')))
s = []
count = 0
for i in l:for j in l:if i!=j:s.append(i+j)
s = set(s)
count = len(s.intersection(l))
print(count)

2.P1567 统计天数

循环外层必须再要加一个判断,不然就会有一个测试点过不了。

输入:

2

1 2

输出:

不加外层循环输出的是1,但是其实我们知道结果是2

因为在天数一直都处于增加的状态的时候,到最后一天的时候就直接跳出了循环。并不会执行else。

n = int(input())
l = list(map(int,input().split(' ')))
count = 0
flag = 1
last = 0
for i in l:if i > last:count += 1else:if count > flag:flag = countcount = 1last = i
if count > flag:flag = count
print(flag)

3.P1055 [NOIP2008 普及组] ISBN 号码

 这道题一开始我想着得是用字符串去做,后来发现很不方便,就是在修改字符串的数值方面远不如列表,换用上了列表就方便很多了。

s = list(input())
flag = 0
count = 1
for i in range(len(s)-1):if i!=1 and i!=5 and i!=11:flag += int(s[i])*countcount += 1
num = flag%11
if num == 10:num = 'X'
if str(num) == s[-1]:print('Right')
else:s[-1] = str(num)for i in s:print(i,end='')

4.P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

 这道题就是关于字母转为ascii数字的问题,要用到一个函数。ord函数。可以直接将字符串转为数字。

ord() 函数:

返回对应的 ASCII 数值

l1 = list(input())
l2 = list(input())
result1 = 1
result2 = 1
for i in l1:result1 *= (ord(i)-ord('A'))+1
for i in l2:result2 *= (ord(i)-ord('A'))+1
if result1%47 == result2%47:print('GO')
else:print('STAY')

5.P1308 [NOIP2011 普及组] 统计单词数

这道题的解法我是看了一个大佬的代码,因为我自己实在是写不出来,大佬的思路简直就是我无法想到的,非常值得学习。大佬还贴心写出来了注释,很好看懂。

s1=input()#输入要查询的单词
s1=s1.upper()#将单词转成大写
x=len(s1)#s1字符串的长度
s2=input()#输入文章
s3=[]#s3每次提取文章的一个单词
y=len(s2)#s2字符串长度
sum=0#sum记录单词出现在文章中的次数
begin=-1#begin记录单词第一次出现在文章中的位置
for i in range(y):if(s2[i]!=' '):s3.append(s2[i].upper())#将一个完整的单词放入s3中else:if(list(s1)==s3):#比较单词和s3所储存的单词是否相同sum+=1#如果相同次数加一if(begin==-1):#首次出现特定单词begin=i-x#首次出现的位置s3.clear()#清空准备下一个单词
if(sum>0):print(sum, begin)
else:print(-1)#未查询到输出-1

6.P1047 [NOIP2005 普及组] 校门外的树

 这道题就是运用了集合中元素的互异性。

l,m = map(int,input().split(' '))
a = []
for i in range(m):u,v = map(int,input().split(' '))for i in range(u,v+1):a.append(i)
a = set(a)
print(f'{l - len(a)+1}')

7.P1046 [NOIP2005 普及组] 陶陶摘苹果

l = list(input().split(' '))
h = int(input())
count = 0
for i in l:if h+30 >= int(i):count += 1
print(count)

8.P1553 数字反转(升级版)

        这道题写出100分实在是太难了,在下载了洛谷提供的多次数据之后终于全部 AC,因为情况很多,所以必须得考虑得/十分仔细。其实这道题的思路就是比较简单的,分不同情况进行处理,但是本质上都是对整数的处理。最难的情况是小数,因为在数字进行反转的时候0不能在开头,对于小数点的前一部分的反转,直接转变为Int之后就不用考虑那些0,但是对于小数点后面的数字就比较麻烦,这个时候就需要重新寻找pos的数值。但是这个时候我们必须考虑到如果小数点的右边只有一个0,按照我的那个方法是会报错的,所以我加了一个try语法就解决了。

find函数:

如果包含子字符串返回开始的索引值,否则返回-1。

s = input()
if '.' in s:pos = s.find('.')s1 = ''s2 = ''s3 = ''for i in range(0,pos):s1 +=s[pos-i-1]print(int(s1),end='')print('.',end='')try:for i in range(pos+1,len(s)):if s[i] != '0':pos2 = ibreakfor j in range(len(s)-1,pos2-1,-1):s3 += s[j]print(int(s3))except:print("0")
elif '/' in s:pos = s.find('/')s1 = ''s2 = ''for i in range(0, pos):s1 += s[pos - i - 1]print(int(s1),end='')print('/', end='')for j in range(len(s) - 1, pos, -1):s2 += s[j]print(int(s2))
elif '%' in s:pos = s.find('%')s1 = ''for i in range(0, pos):s1 += s[pos - i - 1]print(int(s1), end='')print('%', end='')
else:s1 = ''for i in range(0,len(s)):s1 += s[len(s)-i-1]print(int(s1))

9.P1598 垂直柱状图

         简单来说一下这道题我做的思路,首先我们要算出26个字母出现的次数,然后存入一个列表,仔细观察打印的格式,我们需要关注打印多少行是由什么决定的,最后我们发现,打印的行数与出现次数的最大值有关,于是我们通过找到出现次数的最大值来决定打印的行数。接着就是如何打印出格式出来,这个就比较简单就是次数问题,那需要注意的就是最后一个打印出来的没有空格。

chr函数:

返回值是当前整数对应的 ASCII 字符。

ls = ''
for i in range(4):s = input()ls += s.replace(' ','')
ls = ls.replace('.','')
ls = ls.replace('!','')
var = 'A'
l = []
for i in range(26):temp = chr(ord(var) + i)num = ls.count(temp)l.append(num)
Max = max(l)
for i in range(Max):for j in range(len(l)):if l[j] >= (Max-i):if j != len(l)-1:print("*",end=' ')else:print("*")else:if j != len(l) - 1:print(" ", end=' ')else:print(" ")for i in range(26):if i != 25:print(f'{chr(ord(var)+i)}',end=' ')else:print(f'{chr(ord(var) + i)}')

10.总结

继续加油!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/454229.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不负书香,传承有我

随着科技的飞速发展,电子书、网络资源日益丰富,但实体书仍以其独特的魅力和不可替代性在每个人的生活中占据一席之地。为确保每一本书都能被正确、有序地摆放,为每一个读者提供便利,在2024年1月24日,曲阜师范大学计算机…

【数据分享】1929-2023年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 之前我们分享过1929-2023年全球气象站点的逐年平均气温数据、逐年最高气温数据…

AIGC技术讲解以及应用的落地

简介 近期,火爆的“AI绘画”、图片转AI图,智能聊天软件ChatGPT,引起了人们广泛关注。人工智能潜力再次被证明,而这三个概念均来自同一个领域:AIGC。AIGC到底是什么?为什么如此引人关注?AIGC能产…

ftrace工具学习笔记

ftrace是一个功能强大的Linux内核跟踪工具,可用于分析内核的行为和性能问题。它可以用来收集各种内核跟踪数据,如函数调用、内存分配、中断处理等。以下是ftrace的一些主要特点和用法: ftrace是内核自带的跟踪工具,因此无需安装。…

二叉搜索树题目:二叉搜索树的最近公共祖先

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:二叉搜索树的最近公共祖先 出处:235. 二叉搜索树的最近公共祖先 难度 3 级 题目描述 要求 给定一个…

CSP-202209-1-如此编码

CSP-202209-1-如此编码 解题思路 核心逻辑在于利用arr1和arr2两个数组来逐步计算出每个c[i]被使用的次数,这些次数即为题目中的b[i]。arr1[i] m % c[i]用于计算在用c[i]整除m后的余数,这个余数表示在当前级别i上,m还需要多少才能被c[i]整除…

Linux--- vim详解

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 “学如逆水行舟&#xff0…

如何配置SSH实现无公网ip远程连接访问Deepin操作系统

📑前言 本文主要是配置SSH实现无公网ip远程连接访问Deepin操作系统的文章,如果有什么需要改进的地方还请大佬指出⛺️** 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 &…

CAN通信----(创芯科技)CAN分析仪----转CANTest使用

点击进入官方链接进行下载创芯科技 CAN分析仪资料包: 创芯科技的官网:https://m.zhcxgd.com/ 我使用的是至尊版红色带OBD转接头的: 所有下图是我选择…

Qt可视化大屏布局

科技大屏现在非常流行,这里分享一下某个项目的大屏布局(忘了源码是哪个博主的了) 展示 这个界面整体是垂直布局,分为两个部分,标题是一个部分,然后下面的整体是一个layout布局,为另外一部分。 l…

PE文件结构 安全分析与恶意软件研究 逆向工程 优化与性能调整 兼容性与移植性分析

了解PE(Portable Executable,可移植可执行文件)文件结构有多个用途 对于软件开发、安全分析、逆向工程等领域的专业人士来说尤其重要。PE文件格式是Windows操作系统中用于可执行文件、动态链接库(DLLs)、以及其他文件…

随身wifi刷机

工具密码:f5ft 刷机包 MiKo备份(有BIN包的不用,没有bin的去下载就砖包) 需要进9008模式,用牙签插着孔里的按钮查如电脑usb接口,看到 出现端口,有个9008的就算成功进入,安装替换mik…