今年十八,蓝桥速刷(Python-I)

简介: 今年十八,蓝桥速刷(Python-I)

前言


🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。


蓝桥杯是个啥


蓝桥杯是由工信部 人才交流中心举办的全国性专业信息技术赛事


图片引自一篇详情介绍带你了解什么是蓝桥杯。 - 知乎

省一进国赛,只要进国赛至少拿国三,听说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])

因为小母牛是从第四年开始生娃的,所以每年比上年的增加量就是三年前的母牛数量,所以当年的母牛数量等于前一年的母牛数量加上前三年的母牛数量

目录
相关文章
|
8月前
|
数据处理 Python
每天 3 分钟,小闫带你学 Python(二十一)
每天 3 分钟,小闫带你学 Python(二十一)
|
8月前
|
C语言 Python
每天 3 分钟,小闫带你学 Python(十九)
每天 3 分钟,小闫带你学 Python(十九)
|
8月前
|
存储 iOS开发 Python
每天 3 分钟,小闫带你学 Python(二十二)
每天 3 分钟,小闫带你学 Python(二十二)
|
5月前
|
Python
6 轻松学python 6-7节 ,python入门完结!
6 轻松学python 6-7节 ,python入门完结!
33 0
|
8月前
|
Python 容器
每天 3 分钟,小闫带你学 Python(十八)
每天 3 分钟,小闫带你学 Python(十八)
|
8月前
|
存储 Python 容器
每天 3 分钟,小闫带你学 Python(二十)
每天 3 分钟,小闫带你学 Python(二十)
|
8月前
|
程序员 Python
每天 3 分钟,小闫带你学 Python(二十五)
每天 3 分钟,小闫带你学 Python(二十五)
|
8月前
|
Python
每天 3 分钟,小闫带你学 Python(二十六)
每天 3 分钟,小闫带你学 Python(二十六)
|
8月前
|
Unix Linux iOS开发
每天 3 分钟,小闫带你学 Python(二十四)
每天 3 分钟,小闫带你学 Python(二十四)
Python进阶系列(十八)
Python进阶系列(十八)