当前位置: 首页 > news >正文

蓝桥杯python组考前准备

1.保留k位小数

round(10/3, 2) # 第二个参数表示保留几位小数 

2.输入代替方案(加速读取)

import sys
n= int(sys.stdin.readline()) # 读取整数(不加int就是字符串)
a, b = map(int, sys.stdin.readline().split()) # 一行读取多个数

3.数学计算

import math
math.gcd((12, 18)) # 最大公约数
math.pow(2,3) # 2的三次方
math.comb(5,2) # 10组合数
math.lcm(12, 18) # 36 最小公倍数
bin(10) # 十进制转二进制
hex(255) # 十进制转16进制
int('1010', 2) # 求1010的十进制
int('A', 16) # 求A的十进制

4.双端队列

from collections import deque
dq = deque()
dq.appendleft() # 左侧加入
dp.pop() # 右侧弹出

5.集合操作

a = {1, 2}
b = {2, 3}
a & b  # 交集
a | b # 并集

6.字符串处理

import re
re.findall(r'\d+', 'a1b22c') # ['1', '22']

s.isdigit() #判断是否是数字

5.文件操作

with open('input.txt', 'r') as f:
    data = f.readlines()  # 读取全部内容

6.二分查找

import bisect
arr = [1,3,5]
bisect.insort(arr, 4) # [1,3,4,5]
pos = bisect.bisect_left(arr, 3)  # 输出 1(第一个3的位置)

7.排列组合相关API

// 1.计算组合数
import math
math.comb(5, 2)
// 2.计算排列数
math.perm(5, 2)
// 3.生成所有的组合数
import itertools
list(itertools.combinations([1,2,3,4], 2))
// 4.生成所有排列数
list(itertools.permutations([1, 2, 3, 4]), 2)

9.二维数组根据某一个元素排序

nums = [[1,2,3], [4,6,6]]
nums = sorted(nums, key = lambda x:x[1])

10.字典排序

dic = {'A': 1, 'B': 2, 'C':3}
dic = sorted(dic.items(), key = lambda x:x[0])

11.二分查找代码模板

nums = [11, 22, 5, 66, 32,48]
left = 0
target = 5
right = len(nums)-1
while left <= right:
	mid = (left + right) // 2
	if nums[mid] < target:
		left = mid + 1
	elif nums[mid] > target:
		right = mid - 1
	else:
		return mid // 返回下标

12.回溯
全排列

def permute(nums):
	path = []
	result = []
	def backtracking(nums, used):
		if len(path) == len(nums):
			result.append(path[:])
			return
		for i in range(len(nums)):
			if used[i] == 1:
				continue
			path.append(nums[i])
			used[i] = 1
			backtracking(nums, used)
			used[i] = 0
			path.pop()
	backtracking(nums, [0] * len(nums))
	return result

组合

def combine(n, k):
	path = []
	result = []
	def dfs(n, k, startIndex):
		if len(path) == k:
			result.append(path[:])
			return
		for i in range(startIndex, n+1):
			path.append(i)
			dfs(n, k, i+1)
			path.pop()
	dfs(n, k, 1)
	return result

13.前缀和
用来快速求出某一个区间的和

nums = [1, 2, 3, 4, 5]
s = [0] * (len(nums)+1)
for i in range(1, len(nums)+1):
	s[i] = nums[i-1] + s[i-1]
result = s[r] - s[l-1] # 求出[l, r] 的区间和

14.求两个时间有多少个星期一

import datetime
from datetime import timedelta
t1  = datetime(2025, 4, 1)
t2 = datetime(2000, 1, 1)
count = 0
current = t2
while current <= t1:
	if currnt.weekday() == 0: // 判断星期几
		count += 1
	current += timedelta(days=1) // 天数加一
print(count)

相关文章:

  • 代码随想录第14天:(二叉树)
  • CasaOS香橙派安装HomeAssistant智能家居系统并实现远程管理家中智能设备
  • 微服务简述
  • Backtrader从0到1——第一个回测策略
  • Gerapy二次开发:用户管理专栏主页面开发
  • 算法训练之动态规划(二)
  • 深度解析强化学习:原理、算法与实战
  • 【LunarVim】解决which-key 自定义键位注册不成功问题
  • adb|scrcpy的安装和配置方法|手机投屏电脑|手机声音投电脑|adb连接模拟器或手机
  • IDEA、Webstorm使用账号密码登录Gitlab
  • 145.WEB渗透测试-信息收集-小程序、app(16)
  • CExercise_09_1结构体和枚举_1定义一个Date结构体,包含年、月、日数据项。编写一个函数,计算两个日期之间的天数差
  • 前端笔记-ECMAScript语法概览
  • 在Linux系统命令行如何使用deepseek官方API调用AI大模型?
  • python:all列表
  • 平时工作忙,报考学习PMP要怎么规划?需要多长时间?
  • CentOS Stream release 9安装 MySQL(一)
  • 用VScode来编写前后端——构建基础框架
  • 信息系统项目管理师-第十五章-项目风险管理
  • 向量密码本:Threejs 用加减乘除驯服 3D 空间
  • 免费的网站申请/手机优化什么意思
  • 手机网站开发ibanghu.com/广州网站建设方案优化
  • 中山网站建设价格低/nba最新消息新闻
  • js网站大全/无锡百度正规公司
  • 小说推广赚钱平台/网站seo怎么操作
  • 淘宝联盟做返利网站/地推拉新app推广怎么做