python竞赛常用知识 1-1

系列文章目录

  1. Python知识
    1.1 常用操作
    1.2 常用的Python内置模块
  2. 算法部分
  3. 例题


前言

最近在准备蓝桥杯,我整理了一些在蓝桥杯中使用的Python基础库和一些比赛常用的技巧。

一、Python知识

1.1 常用操作

1.1.1 Python接收数据

# 1、接收一个元素
s = input()  # 字符串
n = int(input())  # 整数

# 2、接收两个或三个元素(以空格隔开)
n, m = map(int, input().split())
n, m, k = map(int, input().split())

# 3、将一行元素放入数组中
num = [int(i) for i in input().split()]

# 4、将数组变为整个字符串
s = "".join(map(str, num))

1.1.2 python内置方法

1.1.2.1 进制转换
hex()  将数字转换为十六进制字符串
oct()  将整数转换成八进制字符串               
oct(int("39",16)) >>>'0o71'  十六进制转八进制
chr(number)  返回数字对应的ascii码值
divmod(a,b)  返回(a//b,a%b)
ord()   返回字符的ASCII编码
round(0.55555555,3) 四舍五入
pow()
1.1.2.2 字符串操作

字符串基本知识:原文链接
内容包含下列
1 字符串查询(index,find)
2. 字符串大小写转换操作(upper、lower、swapcase、capitalize和title)
3. 字符串对齐(center,just和zfill)
4. 分割字符串(split、splitlines和partition)
5. 合并与替换(join,replace)
6. 判断字符串(isidentifier、isspace、isalpha、isdecimal、isnumeric和isalnum等)
7. 字符串的比较(<,>,max,min等)
8. 去除两端多余字符操作(strip)
9. 判断开头结尾字符串(startswith,endswith)
10. 字符串计数(count,len)
11. 字符串的编码与解码(encode,decode)
补充:

# 使用find()方法查找子串
str6 = "Hello, world!"
print(str6.find("world")) # 输出7 (从0开始)
print(str6.find("python")) # 输出-1
# 使用in运算符查找子串
print("world" in str6) # 输出True
print("python" in str6) # 输出False

s36 = 'Hello123'
s37 = s36.isalnum() # 判断是否全是字母和数字
s38 = s36.isalpha() # 判断是否全是字母
s39 = s36.isdigit() # 判断是否全是数字
s40 = s36.islower() # 判断是否全是小写
s41 = s36.isupper() # 判断是否全是大写
s42 = s36.isspace() # 判断是否全是空白
print(s37) # 输出 True
print(s38) # 输出 False
print(s39) # 输出 False
print(s40) # 输出 False
print(s41) # 输出 False
print(s42) # 输出 False
1.1.2.3 copy 中的deepcopy

copy() 和 deepcopy() 的区别在于对于复合对象的拷贝,copy() 只会复制对象的表面,而 deepcopy() 会复制对象的本质。因此,当我们需要完全独立的对象副本时,应该使用 deepcopy(),而不是 copy()。

import copy
a = [1, 2, [3, 4]] # a 是一个复合对象,包含了一个列表的引用
b = copy.copy(a) # b 是 a 的浅拷贝,只拷贝了 a 的第一层
c = copy.deepcopy(a) # c 是 a 的深拷贝,拷贝了 a 的所有层次
a[2][0] = 5 # 修改 a 中的列表元素
print(a) # 输出 [1, 2, [5, 4]]
print(b) # 输出 [1, 2, [5, 4]],因为 b 中的列表引用和 a 中的相同,所以受到影响
print(c) # 输出 [1, 2, [3, 4]],因为 c 中的列表引用和 a 中的不同,所以不受影响
1.1.2.4 functools.lru_cache 递归算法加速

functools.lru_cache 是一个非常有用的装饰器,它可以为深度优先搜索(DFS)等递归函数提供记忆化功能,即将函数在不同参数下的运行结果缓存起来,以便下次以相同的参数调用时直接返回缓存的结果,从而节省计算时间和空间。

import functools
@functools.lru_cache(maxsize=None) # 使用 functools.lru_cache 装饰器,设置缓存容量为无限大
def fib(n):
    # 定义一个求斐波那契数列的函数
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

print(fib(10)) # 输出 55,没有缓存,需要递归计算
print(fib(10)) # 输出 55,有缓存,直接返回结果
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值