????????????????????????
????????????Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照????????????
????????????Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++)
???? 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!???????????? ????最后,愿我们都能在看不到的地方闪闪发光,一起加油进步???????????? ????????????“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~????????????
????????????✨✨✨
前言: 蓝桥杯前夕,真的是发现自己啥也没准备,考试就来啦!虽然说重在参与,但是只要是比赛咱们就得拼尽全力,为自己而战(虽然我是心疼我的三百块钱)~我整理了一些基础的东西,希望大家看到之后都能有所收获,相信自己一定可以发挥出自己的全部潜能!
一、输入
1.输入一个整数
n=int(input())2.输入两个整数
split()默认是用空格隔开,如果需要其他符号隔开,可以在其中用引号引出我们想用的符号:.split(',')
A,B=map(int,input().split())如果想用列表存储可以:
list1=list(map(int,input().split()))二、创建
1.创建二维列表
a=[[] for i in range(n)]# [[], [], [], [], [], [], [], [], [], []]
2.创建全零列表
a = [0 for i in range(n)]# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
或者:
a = [0]*n# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
三、转化
1.进制转换
1.转十六进制:a=hex(2)0x2
2.转十进制:a = int(s,16) 这里的int(s,16)代表把16进制的s转化成10进制 这里特别要注意其中的 s必须为字符串,如果你在其中不加任何设定的输入数字的话,他会自动认定为整数,这样肯定会报错的,所以说你可以使用引号或者将前面加上str()去进行一个字符串的转化:
a = int(str(3),16)print(a)
# 3
3.转八进制:a=oct(2)0o2
4.转二进制:a=bin(2)0b10
int('11',2) #将二进制'11'转化为十进制33
int('18',16) #将八进制'18'转化为十进制24
24
int('24',8) #将二进制'24'转化为十进制20
20
2.储存单位转换问题
二进位bit
字节1Byte=8个二进位
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1MB/s=8Mbps=8Mb/s
200*1024/8=25600KB/s=25MB/s
3.Ascii值转换
这里要注意ord()将字母转化为数字,chr()将数字转化为字母,‘a’是97 ‘A’是65 中间的90-96都是一些符号之类的东西。
AA=ord('a') # crd()函数就是用来返回单个字符的ascii值(0-255)# 97
BB=chr(65) # chr()函数是输入一个整数[0,255]返回其对应的ascii符号
# 'A'
四、规律公式
1.有(无)向图 边数问题
有向图: n个节点,最多n(n-1)条边,最少 n 条边
无向图:n个节点,最多 n(n-1)/2 条边,最少n-1 条边(没有自环和重边)
2.二叉树 叶子数问题
一棵包含有n个结点的二叉树,最多包含多少个叶结点?
叶节点:(n+1)/2
3.BFS问题
BFS基本模板:
graph={'A':['B','C'],'B':['A','C'],
'C':['B','A'],
'D':['B','C','E'],
'E':['D','C','B'],
'F':['D']}
def BFS(graph,s):
queue=[]
queue.append(s)
seen=[]
seen.append(s)
while len(queue)>0:
vertex=queue.pop(0)
nodes=graph[vertex]
for i in nodes:
if i not in seen:
queue.append(i)
seen.append(i)
print(vertex)
BFS(graph,'E')
>>>
E
D
C
B
A
BFS最短路径问题:
graph={'A':['B','C'],'B':['A','C','D'],
'C':['B','A','D'],
'D':['B','C','E','F'],
'E':['D','C'],
'F':['D']}
def BFS(graph,s):
queue=[]
queue.append(s)
seen=[]
seen.append(s)
parent={s:None}
while len(queue)>0:
vertex=queue.pop(0)
nodes=graph[vertex]
for w in nodes:
if w not in seen:
queue.append(w)
seen.append(w)
parent[w]=vertex
#print(vertex)
return parent
parent=BFS(graph,'E') # E 终点
''' #输出从B到E的最短路径
v='B'
while v!=None:
print(v)
v=parent[v]
'''
v='B' # B 起点
way=[]
while v!=None:
way.append(v)
v=parent[v]
print(way,len(way))
4.DFS问题
DFS基本模板:
graph={'A':['B','C'],'B':['A','C','D'],
'C':['B','A','D','E'],
'D':['B','C','E','F'],
'E':['D','C'],
'F':['D']}
def DFS(graph,s):
stack=[]
stack.append(s)
seen=[]
seen.append(s)
while len(stack)>0:
vertex=stack.pop()
nodes=graph[vertex]
for i in nodes:
if i not in seen:
stack.append(i)
seen.append(i)
print(vertex)
DFS(graph,'E')
>>>
E
C
A
B
D
F
五、必备函数
1.gcd()函数
gcd(最大公约数) 可以直接用来去求最大公约数,需要调用math库:
import mathprint(math.gcd(12,6))
# 6
而最小公倍数函数lcm()不可以直接用则可以通过gcd()函数间接求出来:a*b=gcd(a,b)*lcm(a,b),即:lcm(a,b) = a*b/gcd(a,b)
2. 阶乘函数factorial()
import mathprint(math.factorial(n))
# 求n的阶乘大小
3.排列permutations+组合combinations函数
总结一下我们数学中常说的排列组合问题:
1.组合:itertools.combinations()用法:
for j in (itertools.combinations('abcd', 3)):print(j)
print(''.join(j))
# ('a', 'b', 'c')
# ('a', 'b', 'd')
# ('a', 'c', 'd')
# ('b', 'c', 'd')
# abc
# abd
# acd
# bcd
2.排列:itertools.permutations()用法:
import itertoolsfor i in itertools.permutations('abc'):
print(i)
# ('a', 'b', 'c')
# ('a', 'c', 'b')
# ('b', 'a', 'c')
# ('b', 'c', 'a')
# ('c', 'a', 'b')
# ('c', 'b', 'a')
4.datetime模块函数
1.设年份
import datetimes=datetime.date(2022,4,7)
2.查询星期几
import datetimes=datetime.date(2022,4,7)
s.weekday()
3.查询年月日,在后面跟上year或month或day
import datetimes=datetime.date(2022,4,7)
s.day
4.设置时间间隔 以天为单位
delta=datetime.timedelta(days=1)5.判断日期合法性
def judge(x,y,z):try:
s=datetime.date(x,y,z)
except:
print('日期不合法')
5.pow()函数
pow(x,y)表示求解x的y次幂
pow(x,y,z)表示求解x的y次幂对z取余后的结果
# 8print(pow(2,3,5)) # 2的3次方是8,然后8再对5进行取余处理
# 3
六、规定套路
1.判断质数
def zhishu(x):for i in range(2,int(x**0.5)+1):
if x%i == 0:
return False
return True
2.判断闰年
y = int(input())if (y%4==0 and y%100 != 0) or y % 400 == 0:
print('yes!')
else:
print('No!')
3.全排列
import itertoolsfor i in itertools.permutations([x for x in range(1,10)]):
print(i)
大家加油!相信自己,去考出自己的理想成绩吧~
???? The best time to plant a tree is ten years ago, followed by now! ????
???????????? 最后,作者很感谢能够阅读到这里的读者。如果看完觉得好的话,还请轻轻点一下赞或者分享给更多的人,你们的鼓励就是作者继续行文的动力。
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了,我们下期再见~