datetime模块
提一下基本知识:平年2月28天,闰年29天,闰年:能被4整除却不能被100整除或能被400整除的年份
import datetime #设置开始年份 s=datetime.date(2022,4,5) #查询星期几 s.weekday() #查询年月日,在后面跟上year或month或day s.day #设置时间间隔 一般以天为单位吧 delta=datetime.timedelta(days=1) #判断日期合法性 def judge(x,y,z): try: s=datetime.date(x,y,z) except: print('日期不合法')
进制转换函数+字符串有关函数:
ord:把字符转化为对应的Ascii(ord('A')=65)
chr:把Ascii转化为对应的字符 ord和chr混淆了没事比赛两个试一下就行了!!
lower()和upper()函数顾名思义
判断某个字符是否为字母 isalpha()函数:
判断某个字符是否为数字isdigit()函数:
十进制转二进制 bin函数():注意的是出来的是字符串,且有前缀'0b',注意去除
十进制转十六进制 hex函数()):注意的是出来的是字符串,且有前缀'0x',注意去除
十进制转八进制 oct函数()):注意的是出来的是字符串,且有前缀'0o',注意去除
二进制,十六进制,八进制转十进制 都是一个函数:int ,用法int(#字符串,#字符串对应的进制)
collections模块
import collections queue=collections.deque() #在两头插入元素的时候效率很高 #常用操作append,popleft(),pop()
8.数学公式
1^2+2^2+3^2+.....n^2=n(n+1)(2n+1)/6,用立法差公式(a+1)^3-a^3推得,累加法得到
最大不能表示的数:若gcd(a,b)=1 a,b>0,那么a,b最大不能表示的数为ab-(a+b),如果不互质,那么不能表示的数有无穷多个,红色部分可以推广到n个数字
9.字典和列表的快速创建
#字典快速初始化
p=dict((i,0) for i in range(10))
#列表解析式(初始化
l=[[0]*10 for i in range(10)]
10.原码,反码,补码详细介绍可以看我这篇文章:蓝桥杯 真题:明码 一题掌握3种码_Py小郑的博客-CSDN博客y
原码范围[-127,127],反码是在原码的基础上除了符号位全部取反
补码实在反码的基础上加一,计算机一律用补码存储数字
正数的三种码一样,负数从原码开始转化就行了。
补码的范围[-128,127],特别的,规定-128的补码为10000000
11.树
满二叉树:1:最后一层结点无子结点 2:除掉最后一层,任何一层的结点都有两个孩子
完全二叉树:1:最后一层从左往右排列 2:除掉最后一层为满二叉树
求两种树的深度:满二叉树>>log(2,n+1)
完全二叉树>>[log(2,n)]+1
树的直径:DFS求法,先随便取一个出发点,然后搜出第一个端点,然后以这个端点为出发点,继续DFS,搜出另一个端点。
板子:
#三个容器 #根据题意创建散列表 edge=dict((i,{}) for i in range(n)) #例如edge[1]={2:12,3:14}表示1到2费用是12,1到3费用是14 vis=[False for i in range(n)] d=[0 for i in range(n)] def dfs(x): global vis,edge for i in edge[x]: if not vis[i]: d[i]=d[x]+edge[x][i] vis[i]=True dfs(i) vis[i]=False #初始化 vis[0]=0 dfs(0) Q=d.index(max(d))#一个端点 #接下来重复上述,重置 vis=[False for i in range(n)] d=[0 for i in range(n)] vis[Q]=True dfs(Q) W=d.index(max(d)) #QW为直径
其他的明天继续更,6,7,8还有三天,好好准备,拿个省一回来!