前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >今年十八,蓝桥速刷(Python-I)

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

作者头像
吉师散养基地
发布2022-12-29 16:00:46
6320
发布2022-12-29 16:00:46
举报
文章被收录于专栏:我奏是太阳

前言

🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:红中 🍂专栏地址:python专栏 抽根烟先

 蓝桥杯是个啥

蓝桥杯,又称圈钱杯(不是是由工信部 人才交流中心举办的全国性专业信息技术赛事

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

省一进国赛,只要进国赛至少拿国三,听说2023年的国赛在北大举行,所以北大见

奖金还挺多的,虽然没有打ctf挣得多。。。

不多叭叭,开始刷题

关于A+B的两种题型

1、简单的A+B

代码语言:javascript
复制
资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

输入A、B,输出A+B。

输入格式

输入的第一行包括两个整数,由空格分隔,分别表示A、B。

输出格式

输出一行,包括一个整数,表示A+B的值。

样例输入

12 45

样例输出

57

数据规模与约定

-10000 <= A, B <= 10000。

分析下代码:

代码语言:javascript
复制
 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

代码语言:javascript
复制
题目描述
输入两个整数a和b,计算a+b的和

本题很简单,但是注意此题是多组测试数据,即需要不停的接收系统的测试输入,你都可以计算结果并输出

输入格式
输入两个整数A和B

范围不超过2^10

输出格式
求A+B

样例输入
复制

1 1
10 20
样例输出
复制

2
30

如果问我在python里最烦的是什么,那我肯定说是try,expect方法

不巧,本题用的就是

首先呢,这种方法和上面的差不多,ex就ex在它是不停输入的一个玩意,需要通过读取异常来实现退出

那么不多bb,直接看代码

代码语言:javascript
复制
while True:
    try:
        a,b=map(int,input().strip().split())
        print(a+b)
    except:
        break

三个语法点:

while循环

没啥讲的吧

python中的while循环比较简单,无大括号,只需加个":"

如果需要对其施加执行条件,按下图搞就行,注意缩进,这玩意在python中很重要

 至于

代码语言:javascript
复制
while True:

就是固定执行下列循环

strip()

这个函数挺好理解的,就是去除字符串左右两侧的空格或指定字符串,相应的衍生函数有

  • lstrip():去除左侧空格指定字符串(left)
  • rstrip():去除右侧空格指定字符串(right)

 然后就是最不想讲的try/except了

try/except

其实也没啥复杂的,就是自己有点膈应这玩意

首先执行try中的代码,如果里面的函数引起了程序的错误,那么就执行except中的代码

数列

代码语言:javascript
复制
资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

输入格式

  第一行为一个整数n。   第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

输出格式

  输出一行,按从小到大的顺序输出排序后的数列。

样例输入

5 8 3 6 4 9

样例输出

3 4 6 8 9

说白了就是一个简单的排序

方法一

代码语言:javascript
复制
n = int(input())
li = list(map(int,input().split()))
li.sort()
for i in li:
    print(i,end=" ")

分析分析代码

没啥难的

sort()

 这函数默认升序

如果想整成降序

代码语言:javascript
复制
sort(reverse=True)

为啥?

因为这玩意默认reverse = False(升序)

至于为啥用split()读取之后还要在外面费力搞map+list

原因如下图

 左侧是整型列表,右侧是字符型列表

然后是

for循环

 for循环拿这里的举个栗子吧

代码语言:javascript
复制
for i in li

很明显li是咱们创建的列表,那i是啥?

看看代码

in 表示 i是li 里面的数字

那么就可以理解成i是li里第一位元素

通过for循环不断迭代至下一个元素直至整个列表的最后一位。

至于最后的print格式化输出后面再说

方法二

代码语言:javascript
复制
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()

 递归:母牛的故事

我愿称之为母牛无性繁殖的故事

代码语言:javascript
复制
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

输入格式
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。

输出格式
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

样例输入
复制

2
4
5
0
样例输出
复制

2
4
6

分析代码

代码语言:javascript
复制
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])

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

这个里的知识点就先不讲了,累了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  •  蓝桥杯是个啥
  • 关于A+B的两种题型
    • 1、简单的A+B
      •  2、搞心态的A+B
      • 数列
        • 方法一
          • 方法二
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档