蓝桥杯 刷题总结 python

1素数判断

import math
def isprime(n):
    for i in range(2,int(math.sqrt(n))+1):#如果输入2,for循环不执行
        if n%i==0:#如果有不是素数
            return False
    return True#输入2,直接执行
"""一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),
据此,上述代码中并不需要遍历到n-1,遍历到sqrt(n)即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。"""
#100内的素数
for i in range(2,100):
    if isprime(i):
        print(i,end=" ")
#答案 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 

2 分解质因数

n=int(input())
n1=n#n后面会发生改变
la=[]
i=2#最小质数开始
while n!=1:
    if n%i==0:
        la.append(str(i))#变成字符,join链接字符
        n=n//i
    else:
        i=i+1
s="*".join(la)
print("{}={}".format(n1,s))

#输入:12
#答案12=2*2*3

3进制转化

a=int("11",2)#第二个参数表明进制,将其他进制转化为十进制
b=int("52c",16)#十六进制转十进制
c=int("2617",8)#八转十
print(a,b,c)
print(bin(3))#二进制前面会带有0b
print(hex(1324))#十六进制自带0x
print(oct(1423))#八进制自带0o
#答案
"""3 1324 1423
0b11
0x52c
0o2617"""

4最小公倍数

from math import *
def lcm(x,y):
    return x*y//gcd(x,y)
print(lcm(3,5))
#最大公因数gcd(),math里有,直接引用

5排列组合combine

import math
c=math.comb
print(c(3,1))
print(c(8,2))
#答案3,28

6组合combinations

from itertools import combinations#模块itertools
la=[1,2,3,49,5]
print(list(combinations(la,2)))
for i in combinations(la,2):#是按顺序选择的
    print(i[0],i[1])

答案:

[(1, 2), (1, 3), (1, 49), (1, 5), (2, 3), (2, 49), (2, 5), (3, 49), (3, 5), (49, 5)]
1 2
1 3
1 49
1 5
2 3
2 49
2 5
3 49
3 5
49 5

7全排列
from itertools import permutations #排列
#itertools.permutations(iterable, r=None)
num=[2,1,3,4]
for i in permutations(num):
    print(i)
for i in permutations(num,3):
    print(i)
nums = ['a','b','c']
for num in permutations(nums, 3):
    a = num[0] + num[1] + num[2]
    print(a)
答案:
(2, 1, 3, 4)
(2, 1, 4, 3)
(2, 3, 1, 4)
(2, 3, 4, 1)
(2, 4, 1, 3)
(2, 4, 3, 1)
(1, 2, 3, 4)
(1, 2, 4, 3)
(1, 3, 2, 4)
(1, 3, 4, 2)
(1, 4, 2, 3)
(1, 4, 3, 2)
(3, 2, 1, 4)
(3, 2, 4, 1)
(3, 1, 2, 4)
(3, 1, 4, 2)
(3, 4, 2, 1)
(3, 4, 1, 2)
(4, 2, 1, 3)
(4, 2, 3, 1)
(4, 1, 2, 3)
(4, 1, 3, 2)
(4, 3, 2, 1)
(4, 3, 1, 2)
(2, 1, 3)
(2, 1, 4)
(2, 3, 1)
(2, 3, 4)
(2, 4, 1)
(2, 4, 3)
(1, 2, 3)
(1, 2, 4)
(1, 3, 2)
(1, 3, 4)
(1, 4, 2)
(1, 4, 3)
(3, 2, 1)
(3, 2, 4)
(3, 1, 2)
(3, 1, 4)
(3, 4, 2)
(3, 4, 1)
(4, 2, 1)
(4, 2, 3)
(4, 1, 2)
(4, 1, 3)
(4, 3, 2)
(4, 3, 1)
abc
acb
bac
bca
cab
cba

8日期处理datetime

"""datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用
,常用的有date、time、datetime、timedelta"""
"""① date类:主要用于处理年、月、日;
② time类:主要用于处理时、分、秒;
③ datetime类:date类和time类的综合使用,可以处理年、月、日、时、分、秒;
④ timedelta类:主要用于做时间加减的"""
#date 主要处理年 月 日
#列子跑步锻炼
from datetime import *
d=date(2022,3,15)
print(d)#输出时中间用-链接
d2=datetime(2022,3,17,22,16,34)#2022-03-17 22:16:34
print(d2)
#利用date类的对象,配合timedelta,进行时间的加减;
d3=d+timedelta(days=-1)#date和timedelta合用
print(d3)
d4=d3+timedelta(days=1)
print(d4)
#利用datetime类的对象,配合timedelta,进行时间的加减
d5=d2+timedelta(hours=1)#datetime和timedelta
print(d5)
d6=d2+timedelta(minutes=30)
print(d6)

答案:

2022-03-15
2022-03-17 22:16:34
2022-03-14
2022-03-15
2022-03-17 23:16:34
2022-03-17 22:46:34

你可能感兴趣的:(蓝桥杯,python)