前言
🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。
🍁个人主页:红中
🍂专栏地址:python专栏
抽根烟先
蓝桥杯是个啥
蓝桥杯,又称圈钱杯(不是
是由工信部 人才交流中心举办的全国性专业信息技术赛事
图片引自一篇详情介绍带你了解什么是蓝桥杯。 - 知乎
省一进国赛,只要进国赛至少拿国三,听说2023年的国赛在北大举行,所以北大见
奖金还挺多的,虽然没有打ctf挣得多。。。
不多叭叭,开始刷题
关于A+B的两种题型
1、简单的A+B
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
输入A、B,输出A+B。
输入格式
输入的第一行包括两个整数,由空格分隔,分别表示A、B。
输出格式
输出一行,包括一个整数,表示A+B的值。
样例输入
12 45
样例输出
57
数据规模与约定
-10000 <= A, B <= 10000。
分析下代码:
a,b = map(int,input().split())
print(a+b)
首先呢,发现引用了几个函数,分别介绍下
input()
从键盘读取内容,没啥讲的。
split()
这个函数相对来说不是很好理解
该函数主要用于python读取多个数据,通过其读取后为列表形式
至于如何分割,就看你想怎么设置分隔符了。
看上图,第二行在遇到\n时分割。
说第三行,以空格为分隔符,分成两份,至于后面的'1',就是0,1,2,3,4这玩意如果把1改成0,整个str就变成了一块,分割不开那种。
map()
map(A,B)
A默认为函数,map()负责将B中的每一个元素通过A转换为相应的结果
那么在本题中,就是将通过split()读取进来的数组成的列表转换为int,也就是整形形式。
2、搞心态的A+B
题目描述
输入两个整数a和b,计算a+b的和
本题很简单,但是注意此题是多组测试数据,即需要不停的接收系统的测试输入,你都可以计算结果并输出
输入格式
输入两个整数A和B
范围不超过2^10
输出格式
求A+B
样例输入
复制
1 1
10 20
样例输出
复制
2
30
如果问我在python里最烦的是什么,那我肯定说是try,expect方法
不巧,本题用的就是
首先呢,这种方法和上面的差不多,ex就ex在它是不停输入的一个玩意,需要通过读取异常来实现退出
那么不多bb,直接看代码
while True:
try:
a,b=map(int,input().strip().split())
print(a+b)
except:
break
三个语法点:
while循环
没啥讲的吧
python中的while循环比较简单,无大括号,只需加个":"
如果需要对其施加执行条件,按下图搞就行,注意缩进,这玩意在python中很重要
至于
while True:
就是固定执行下列循环
strip()
这个函数挺好理解的,就是去除字符串左右两侧的空格或指定字符串,相应的衍生函数有
- lstrip():去除左侧空格指定字符串(left)
- rstrip():去除右侧空格指定字符串(right)
然后就是最不想讲的try/except了
try/except
其实也没啥复杂的,就是自己有点膈应这玩意
首先执行try中的代码,如果里面的函数引起了程序的错误,那么就执行except中的代码
数列
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5 8 3 6 4 9
样例输出
3 4 6 8 9
说白了就是一个简单的排序
方法一
n = int(input())
li = list(map(int,input().split()))
li.sort()
for i in li:
print(i,end=" ")
分析分析代码
没啥难的
sort()
这函数默认升序
如果想整成降序
sort(reverse=True)
为啥?
因为这玩意默认reverse = False(升序)
至于为啥用split()读取之后还要在外面费力搞map+list
原因如下图
左侧是整型列表,右侧是字符型列表
然后是
for循环
for循环拿这里的举个栗子吧
for i in li
很明显li是咱们创建的列表,那i是啥?
看看代码
in 表示 i是li 里面的数字
那么就可以理解成i是li里第一位元素
通过for循环不断迭代至下一个元素直至整个列表的最后一位。
至于最后的print格式化输出后面再说
方法二
n = int(input())
li = list(map(int,input().split()))
li.sort()
for i in li:
if n == 1:
print("",end=str(i))
break
print(str(i),end=" ")
这个直接看下图吧
图片引自菜鸟教程-print()
递归:母牛的故事
我愿称之为母牛无性繁殖的故事
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入格式
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出格式
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
样例输入
复制
2
4
5
0
样例输出
复制
2
4
6
分析代码
while True:
n=int(input())
l=[1,2,3]
if n==0:
break
else:
for i in range(3,n):
l.append(l[i-1]+l[i-3])
print(l[n-1])
因为小母牛是从第四年开始生娃的,所以每年比上年的增加量就是三年前的母牛数量,所以当年的母牛数量等于前一年的母牛数量加上前三年的母牛数量
这个里的知识点就先不讲了,累了