云计算百科
云计算领域专业知识百科平台

蓝桥杯python备赛笔记之(一)Python语法基础及算法入门

前言

博主在写笔记时准备的是本科生B组赛道,内容可供准备同样赛道及以下的同学参考。

希望各位同学蒙的全对,考的全会。

如果对你有帮助,可以点赞评论鼓励一下博主吗?拜托拜托——

言归正传,整篇笔记共分为十章,都是博主在准备25年蓝桥杯时所写,听的网课是这个,讲的非常好,很适合零基础速成,如果有听不懂的可以多听几遍

https://www.bilibili.com/video/BV1Zs9VYrEgg?spm_id_from=333.788.videopod.sections&vd_source=5edde23df276e6fb4a94821fa44f38b5

目录如下:

1.Python语法基础及算法入门 2.语法进阶&常用数据结构&算法入门 3.贪心&排序 4.哈希&暴力&前缀 5.二分查找&二分答案 6.搜索&BFS&DFS 7.[数据结构]并查集&堆 8.动态规划 9.图论 10.数论基础&日期问题

一、语法基础

(一)标识符

  • 第一个字符必须是字母或下划线(_)
  • 对大小写敏感
  • 支持中文作为变量名
  • (二)保留字

  • 定义:Python 内置的具有特定功能的单词
  • 限制:不能用作任何标识符名称
  • (三)字符串

  • 引号使用:单引号(')和双引号(")功能完全相同
  • 多行字符串:可通过三引号(''' 或 """)定义
  • 转义符:使用反斜杠(\\)实现转义,如 \\n(换行)、\\t(制表符)
  • 原始字符串:在字符串前加 r,使反斜杠不发生转义,例:r"this is a line with \\n" 会原样显示 \\n
  • 字符串运算:
    • 连接:使用 + 运算符,例:"abc"+"def"="abcdef"
    • 重复:使用 * 运算符,例:"ab"*2="abab"
  • 索引方式:
    • 正向索引:从左往右,起始值为 0
    • 反向索引:从右往左,起始值为 – 1
  • 特性:字符串为不可变序列,无法直接修改单个字符
  • 切片规则:str [start:end:step],遵循左闭右开原则(start 包含,end 不包含),step 为步长(默认 1)
    • 例:设 s='123456789'
      • print (s) → 输出:123456789
      • print (s [0:-1]) → 输出:12345678(第一个到倒数第二个字符)
      • print (s [0]) → 输出:1(第一个字符)
      • print (s [2:5]) → 输出:345(第三个到第六个字符,不包含第六个)
      • print (s [2:]) → 输出:3456789(第三个开始后的所有字符)
      • print (s [1:5:2]) → 输出:24(第二个到第五个字符,步长为 2)
  • (四)模块导入

  • 导入整个模块:import 模块名,例:import math
  • 模块设置别名:import 模块名 as 别名,例:import numpy as np
  • 导入模块中特定函数:from 模块名 import 函数名,例:from math import sqrt
  • 导入模块中多个函数:from 模块名 import 函数 1, 函数 2,…,例:from math import sqrt,sin,cos
  • (五)print 函数

  • 自定义分隔符:通过 sep 参数设置,例:print (2023,13,4,sep='-') → 输出:2023-13-4
  • 自定义结束符:通过 end 参数设置,例:print ("Hello",end=' ') → 输出后不换行,接一个空格
  • 格式化输出:
    • f-string 格式:print (f"{变量名}"),例:name="Alice";print (f"Hello,{name}") → 输出:Hello,Alice
  • 高效输出:
    • 使用 print (*list) 快速输出列表内容
    • 结合 sep 和 end 参数控制输出格式
  • (六)数据类型

  • 常用数据类型及特性
    数据类型英文标识特性示例
    整数 int 支持大整数运算 a=10**100
    浮点数 float 存在精度问题 b=3.14
    字符串 str 不可变序列,支持切片和格式化 s="Hello"
    列表 list 可变序列,支持增删改查 lst=[1,2,3]
    元组 tuple 不可变序列 tup=(1,2,3)
    集合 set 无序不重复,支持集合运算 s={1,2,3}
    字典 dict 键值对映射,键唯一且不可变 d={"key":"value"}
  • 可变性分类
    • 不可变类型:整数、字符串、元组
    • 可变类型:列表、字典、集合
  • (七)函数

  • 基本定义:def 函数名 (参数列表):
    • 函数体
    • 返回值:通过 return 语句返回,例: def add(a,b):
      return a+b
      print(add(1,2)) # 输出:3
  • 默认参数:定义函数时指定参数默认值,调用时可省略该参数,例: def power(x,n=2):
    return x**n
    print(power(3)) # 输出:9
  • 可变参数:
    • 位置可变参数(*args):接收任意数量位置参数,打包为元组,例: def sum_all(*args):
      return sum(args)
      print(sum_all(1,2,3)) # 输出:6
    • 关键字可变参数(**kwargs):接收任意数量关键字参数,打包为字典,例: def print_info(**kwargs):
      for key,value in kwargs.items():
      print(f"{key}:{value}")
      print_info(name="Alice",age=25) # 输出:name:Alice, age:25
  • Lambda 函数(匿名函数):
    • 语法:lambda 参数列表:表达式(冒号前为输入参数,冒号后为返回表达式)
    • 特性:无函数名,仅含一个表达式,计算结果即为返回值
    • 示例 1: x=lambda a:a+10
      print(x(5)) # 输出:15
    • 示例 2(获取中位数): get_mid=lambda nums: nums[len(nums)//2]
      print(get_mid([1,4,5])) # 输出:4
  • 二、算法入门

    (一)快读模板

  • 作用:提升输入读取速度,适用于大量输入场景
  • 实现代码: import sys
    input=lambda: sys.stdin.readline().strip()
  • (二)内置排序算法

  • sorted 函数:
    • 语法:sorted (可迭代对象,key=None, reverse=False)
    • 特性:不修改原可迭代对象,返回排序后的新列表
    • 参数说明:
      • key:排序规则(可指定函数)
      • reverse:排序方向,False 为升序(默认),True 为降序
    • 示例 1(默认升序): nums=[5,3,8,6,7]
      print(sorted(nums)) # 输出:[3,5,6,7,8]
    • 示例 2(降序排序): print(sorted(nums, reverse=True)) # 输出:[8,7,6,5,3]
    • 示例 3(按字符串长度排序): words=["apple","banana","kiwi","cherry"]
      print(sorted(words, key=len)) # 输出:["kiwi","apple","cherry","banana"]
  • list.sort 方法:
    • 语法:列表名.sort (key=None, reverse=False)
    • 特性:直接修改原列表,无返回值
    • 参数说明:与 sorted 函数一致
  • (三)输入与 map 映射

  • map 函数语法:map (函数,可迭代对象),将函数应用于可迭代对象的每个元素,返回迭代器
  • 常见输入格式处理:
    • 示例 1(单行多个整数): a,b,c=map(int,input().split()) # 输入:1 2 3
      print(a,b,c) # 输出:1 2 3
    • 示例 2(多行多个整数): n=int(input()) # 输入行数
      lst=[int(input()) for _ in range(n)] # 读取n行整数
      print(lst)
    • 示例 3(矩阵输入): n,m=map(int, input().split()) # 输入矩阵行数n和列数m
      matrix=[list(map(int,input().split())) for _ in range(n)] # 读取n行m列矩阵
      print(matrix)
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 蓝桥杯python备赛笔记之(一)Python语法基础及算法入门
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!