当前位置:首页 » 《随便一记》 » 正文

蓝桥杯如何不复习也得奖?python组基础知识分享

1 人参与  2023年04月07日 13:42  分类 : 《随便一记》  评论

点击全文阅读


获奖证书镇楼
获奖证书镇楼

文章目录

前言一、python常用的基础语法二、进阶技巧1.生成二维数组2.两个循环变量3.按键排序4.无穷大 三.库的引用1.math库2.itertools库3.datetime库 总结


前言

国赛刚结束,出来分享下笔记

可能有些标题党,但是由于举办届数少、报名人数不多等原因,python组省赛得奖是不难的(至少22年之前是这样)但是今年给我的感觉是:题越来越难并且怪了…不知道明年会不会好点╮(╯▽╰)╭

回归正题,本文主要适用蓝桥杯路人选手,在校赛或者省赛混个名次话,不大量学习也是可以的(比如我)尤其是校赛模拟赛,只要你会简单的python,不会数据结构、不会算法也是可以得很多分的。现在分享一下我总结的,适合裸考蓝桥杯的选手看的基础知识


一、python常用的基础语法

range() 等差数列

>>>a = list(range(10))>>>a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>b = list(range(2,10,2))>>>b[2, 4, 6, 8]>>>for i in range(5):>>>    print(i)01234

for i in range(n) 表示循环n遍

split() 切片

>>>a = "10 20">>>a.split()['10', '20']

题目中很多输入都是一行中输入多个数据,所以需要split()

map() 列表转换

a = "10 20"a = list(map(int, a.split()))a[10, 20]

配合split()和list()使用

sort() 排序

a = [1,3,4,5,2]a.sort()a[1, 2, 3, 4, 5]a.sort(reverse=True)a[5, 4, 3, 2, 1]

注意sort()是直接改变列表内容
以后会有一个sort()更复杂的排序实现


二、进阶技巧

1.生成二维数组

List = [[0]*x for i in range(y)]

生成一个长为y,宽为x的二维数组,列表[0]的内容可更改

>>>l1 = [[0] * 5 for i in range(3)]l1[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]>>>for i in l1:>>>    print(i) [0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0]

2.两个循环变量

当循环中 i 和 j 需要分开操作时

>>>for i, j in zip(range(5), range(10,15)):>>>    print(i, j)    0 101 112 123 134 14

3.按键排序

list.sort(cmp=None, key=None, reverse=False)
我们利用key来实现有要求的排序

>>>def fun(s):>>>    return s.count("1")>>>l = ["11", "1011", "0001", "11111"]>>>l.sort(key=fun)>>>print(l)['0001', '11', '1011', '11111']#按照"1"的个数排序

同理,可以对字典排序

>>>def fun(d):>>>    return d["age"]>>>d = [>>>    {"name":"小明", "age":14},>>>    {"name":"小红", "age":13},>>>    {"name":"小刚", "age":15}]>>>d.sort(key=fun)>>>print(d)[{'name': '小红', 'age': 13}, {'name': '小明', 'age': 14}, {'name': '小刚', 'age': 15}]#按照字典中的"year"键的值排序

4.无穷大

无穷大:float(‘inf’)
负无穷大:float(''inf)

a = float('inf')#给a赋值无穷大

三.库的引用

蓝桥杯是可以引用python自带的库的!
可以为你节省很多时间!
下面我总结了一些我觉得常用的库

1.math库

常用的函数

import mathmath.gcd()#求最大公约数math.factorial()#求阶乘

这两个函数,自己写怎么也要几分钟吧,引用math库,一秒搞定╮(╯▽╰)╭

2.itertools库

神器呀,排列、组合在蓝桥杯里有很多应用
全排列 :permutations()
组合:combinations()

import itertoolsa = [1, 2, 3]for i in itertools.permutations(a):#对a进行全排列    print(i)    >(1, 2, 3)(1, 3, 2)(2, 1, 3)(2, 3, 1)(3, 1, 2)(3, 2, 1)
import itertoolsa = [1, 2, 3]for i in itertools.combinations(a,2):#求a长度为2的组合    print(i)>(1, 2)(1, 3)(2, 3)

3.datetime库

日期题基本都能用

>>>import datetime>>>a = datetime.date(2000,1,1)>>>print(a.day)#输出a的日1>>>print(a.month)#输出a的月1>>>print(a.weekday())#输出a是星期几5>>>print(a.year)#输出a的年份2000>>>b = datetime.timedelta(2)#timedelta(a) 表示a天间隔>>>a = a + b>>>print(a)2000-01-03

看一下真题应用吧

在这里插入图片描述

import datetimea=datetime.date(1900,1,1)b=datetime.date(9999,12,31)count=0while a<b:#循环所有日期    if '2' in str(a):        cnt+=1    a+=tatetime.timedelta(1)#加上一天print(cnt+1)#print(1994240)

总结

就算不会数据结构、算法、数论,掌握这些,省赛应该可以混个奖了吧╮(╯▽╰)╭,校赛越发简单,填空题手算都可以做两三题

总而言之,大家不要对比赛太害怕,祝大家都能成功混到奖!


点击全文阅读


本文链接:http://zhangshiyu.com/post/58745.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1