python
一:第一章
1.print输出
1 | print('hello,world') |
2.转义字符
1 | #转义字符 |
3.标识符和保留字
1 | import keyword |
4.变量
1 | name='宋旭光' |
5.基本类型
1.整数int
1 | #整数类型,可以是二进制,八进制,十进制,十六进制,默认是十进制 |
2.字符串str
1 | '' 和"" 里面的内容都是在一行输出 |
3.类型转换
1 | name='张三' |
6.python注释
1 | #注释单行 |
二:运算符
1.input输入
1 | present=input('请输入你想要的东西:') |
2.算术运算
1 | print(1+1) |
3.赋值
1 | a=b=c=20 #链式赋值 |
4.比较运算
1 | # > < = >= <= != 这些比较结果都是bool类型 |
5.位运算
1 | # &运算 |
6.运算符优先级
1 | ** -->*,/,//,%--> +,- |
三:分支结构
1.对象的布尔值
1 | #以下对象的bool值为False |
2.单分支结构(if)
1 | ''' |
3.双分支结构(if..else)
1 | ''' |
4.多分支结构
1 | ''' |
5.嵌套if
1 | ''' |
6.条件表达式
1 | #输入两个数,比较大小 |
7.pass
1 | #pass什么都不做,只是一个占位符,在搭建代码流程时,没有写代码的地方用pass,可以不报错 |
四:循环
1.range函数
- 用来生成一个整数序列
- 创建range对象的三种方式
- range(stop)
- range(start,stop)
- range(start,stop,step)
1 | #第一种创建方式,只有一个参数 |
2.while循环
- 选择结构的if和循环结构的while的区别
- if是判断一次,条件为true执行一次
- while是判断N+1次,条件为True执行N次
1 | ''' |
3.小练习
1 | #1-100之间的偶数和 |
4.for-in循环
1 | ''' |
5.水仙花
1 | #求三位数的水仙花数: 153=3*3*3+5*5*5+1*1*1 |
6.break
- 用于结束循环结构,通常与分支结构if一起使用
1 | #输入三次密码,如果密码正确则通过,三次不正确就结束 |
- 和while循环搭配使用
1 | #输入三次密码,如果密码正确则通过,三次不正确就结束 |
7.continue
- 用于结束当前循环,进入下一次循环,通常与分支结构if一起使用
1 | #使用continue,求1-50之间的5的倍数 |
8.嵌套循环
1 | #输出一个三行四列的矩阵 |
1 | #输出一个九九乘法表 |
1 | #continue |
五:列表
1.列表的创建
1 | #创建列表的第一种方式 |
2.获取列表的索引
1 | list=['hello','world',95,'hello'] |
3.获取列表中指定元素
1 | 获取单个元素: |
4.列表切片
1 | list=[10,20,30,40,50,60,70,80] |
5.遍历
1 | list=[10,20,30,40,50,60,70,80] |
6.列表增加元素
- append()
- extend()
- insert()
- 切片
1 | list=[10,20,30] |
7.列表删除元素
- remove()
- pop()
- 切片
- clear()
- del
1 | list=[10,20,30,40,50] |
8.列表修改
1 | list=[10,20,30,40,50] |
9.列表排序
1 | list=[10,43,31,50,11] |
10.列表生成式
1 | #list=[i for i in range(1,10)] #[1, 2, 3, 4, 5, 6, 7, 8, 9] |
六:字典
1.字典的创建
1 | 1.使用花括号 |
2.字典元素的获取
1 | scores={'张三':100,'李四':60} |
3.字典元素的增删改
1 | scores={'张三':100,'李四':60} |
4.获取字典视图
1 | scores={'张三':100,'李四':60} |
5.字典元素遍历
1 | scores={'张三':100,'李四':60} |
1 | scores=[{'name':"lisi",'age':50},{'name':"zhangsan",'age':60}] |
6.字典生成式
1 | items=['Fruits','Books','Others'] |
七:元组
- 可变序列:可以进行增删改操作,例如: 列表,字典
- 不可变序列,不可以进行增删改操作,例如: 元组,字符串
1.元组的创建方式
- 不可变,可重复,有序
1 | 1.直接小括号 |
2.元组的遍历
1 | t=('Python','hello',96) |
八:集合
- 集合是无序的
- 集合不允许有重复元素
1.集合创建
1 | #第一种创建方式 |
2.集合的相关操作
1 | s={12,20,30,40} |
3.集合之间的关系
1 | s1={10,20,30} |
4.集合的操作
1 | s1={10,20,30,40,50} |
5.集合生成式
1 | {i*i for i in range(1,10)} |
九:字符串
1.字符串的创建和驻留机制
1 | a='Python' |
2.字符串的查询操作
- index(),查找substr第一次出现的位置,如果查找的子串不存在,会抛出ValueError
- rindex(),查找substr最后一次出现的位置,如果查找的子串不存在,会抛出ValueError
- find(),查找substr第一次出现的位置,如果查找的子串不存在,则返回-1
- rfind(),查找substr最后一次出现的位置,如果查找的子串不存在,则返回-1
1 | s='hello,hello' |
3.字符串的大小写转换
1 | s='hello,python' |
4.字符串对齐操作
1 | s='hello,Python' |
5.字符串的劈分
1 | s='hello world python' |
6.字符串的判断方法
1 | 1.isidentifier() #判断指定的字符是否是合法的标识符,字母,数字,下划线才是合法的 |
7.替换与合并
1 | s='hello,Python' |
8.字符串的比较
1 | print('apple'>'app')#True |
9.字符串格式化(format)
1 | name='张三' |
10.字符串的编码与解码
1 | s='海上生明月' |
十一:函数
1.函数参数传递
1 | def fun(arg1,arg2): |
2.函数的返回值
1 | 函数的返回值: |
3.函数的默认值
1 | def fun(a,b=10) |
4.函数参数定义
1 | def fun(*args): #函数定义时,可变的位置参数 |
5.变量作用域
1 | def fun() |
6.递归函数
1 | #计算阶乘 |
7.斐波那契数列
1 | def fun(n): |
十二.异常处理机制
1.捕获异常
1.try-except
1 | try: |
- 捕获异常的顺序按照先子类后父类的顺序,为例避免遗漏可能出现的异常,可以在最后增加BaseException
1 | #多个异常处理 |
2.try-except-else
- 如果try中没有抛出异常,则执行else,如果try抛出异常,则执行except
1 | try: |
3.try-except-else-finally
- finally无论是否发生异常都会被执行,能常用来释放try块中申请的资源
1 | try: |
2.常见的异常类
- ZeroDivisionError —>除零
- indexError —>序列中没有此索引
- KeyEoor —>映射中没有这个键
- NameError —>未声明/初始化对象(没有属性)
- SyntaxError —>Python语法错误
- ValueError —>传入无效的参数
3.traceback
- 打印错误日志
1 | import traceback |
十三:类
1.类的创建
- 在类外定义为函数,在类内定义为方法
1 | class Student: |
2.对象的创建
1 | stu1=Student('张三',20) |
3.类属性,类方法调用
- 类属性: 类中方法外的变量称为类属性,被该类的所有对象所共享
- 类方法: 使用类名直接访问方法
- 静态方法: 使用类名直接访问方法
1 | print(Student.native_place) #访问类属性 |
4.动态绑定属性和方法
1 | class Student: |
5.封装
1 | class Student: |
6.继承
- 如果一个类没有继承任何类,默认继承object
- Python支持多继承
- 定义子类时,必须在其构造函数中调用父类的构造函数
1 | 语法格式: |
1 | class Person(object): #默认继承object |
7.重写
1 | class Person(object): #默认继承object |
8.object类
1 | class Student: |
9.特殊方法
1 | class Student: |
10.拷贝
1 | 变量的赋值操作: |
1 | 浅拷贝: |

十四:模块
1.模块导入
1 | 语法: |
2.主程序运行
1 | def add(a,b): |
3.包
注意事项:
- import导入时
- import 包名
- import 模块名
- from 包名 import
- from 包名 ipmort 模块名
- from 包名.模块名 imoprt 变量/函数等
1 | 语法: |
4.常用的内容模块
| sys | 与python解释器及其环境操作相关的标准库 |
|---|---|
| time | 提供与时间相关的各种函数的标准库 |
| os | 提供了访问操作系统服务功能的标准库 |
| calendar | 提供与日期相关的各种函数的标准库 |
| urllib | 用于读取来自网上(服务器)的数据标准库 |
| json | 用于使用JSON序列化和反序列化对象 |
| re | 用于在字符串中执行正则表达式匹配和替换 |
| math | 提供标准算数运算函数的标准库 |
| decimal | 用于及逆行精确控制运算精度,有效数位和四舍五入操作的十进制运算 |
| logging | 提供了灵活的记录事件,错误,警告和调试信息等日志信息的功能 |
5.第三方模块安装和使用
1 | 安装: |
十五:文件
1.文件读写
1 | 语法: |
1 | file=open('a.txt','r') |
2.文件打开模式
| r | 以只读模式打开文件,文件的指针会放在文件的开头 |
|---|---|
| w | 以只写模式打开文件,如果文件不存在则创建,如果存在,则会覆盖原有的内容,文件的指针会放在文件的开头 |
| a | 以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则会在末尾追加内容,文件指针在源文件末尾 |
| b | 以魏晋至方式打开文件,不能单独使用,需要与其他模式一起使用,rb,或者wb |
| + | 以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+ |
1 | scr_file=open('logo.png','rb') |

3.with
1 | with open('filename','rb') as 别名: |
文件的复制:
1 | with open('logo.png','rb') as src_file: |
4.os模块
- 这个模块与操作系统有关
- import os
| os.getcwd() | 放回当前的工作目录 |
|---|---|
| os.listdir(path) | 返回指定路径下的文件和目录信息 |
| os.mkdir(path[,mode]) | 创建目录 |
| os.makdirs(path1/path2….) | 创建多级目录 |
| os.rmdir(path) | 删除目录 |
| os.removedirs(path1/path2…) | 删除多级目录 |
| os.chdir(path) | 将path设置为当前工作目录 |
5.os.path
- import os.path
| os.path.abspath(path) | 用于获取文件或目录的绝对路径 |
|---|---|
| os.path.exists(path) | 用于判断文件或目录是否存在,如果存在返回true,否则返回False |
| os.path.join(path,name) | 将目录与目录或者文件名拼接起来 |
| os.path.splittext() | 分离文件名和扩展名 |
| os.path.basename(path) | 从一个目录中提取文件名 |
| os.path.dirname(path) | 从一个路径中提取文件路径,不包括文件名 |
| os.path.isdir(path) | 用于判断是否为路径 |
6.案例
1.列出指定目录下的所有.py文件
1 | import os |
2.walk()
- 遍历得出根目录下所有的文件,包括子文件
1 | import os |
十六:学生管理
1 | filename='student.txt' |
十七:正则表达式
| 操作符 | 说明 | |
|---|---|---|
| . | 表示任何单个字符 | |
| [ ] | 字符集,对单个字符给出取值范围 | [abc]表示a,b,c, [a-z]表示a到z单个字符 |
| [^] | 非字符集,对单个字符给出排除范围 | [^abc]表示非a或b或c的单个字符 |
| * | 前一个字符0次或无限次扩展 | abc* 表示ab,abc,abcc,abccc等 |
| + | 前一个字符1次或无限次扩展 | abc+ 表示abc,abcc,abccc等 |
| ? | 前一个字符0次或1以扩展 | abc? 表示ab,abc |
| | | 左右表达式任意一个 | abc|def 表示abc ,def |
| {m] | 扩展前一个字符m次 | ab{2]c 表示 abbc |
| {m,n} | 扩展前一个字符m至n次,(含n) | ab{1,2}c 表示 abc, abbc |
| ^ | 匹配字符串开头 | ^abc表示abc且在一个字符串的开头 |
| $ | 匹配字符串结尾 | abc$表示abc且在一个字符串的结尾 |
| ( ) | 分组标记,内部只能使用 | 操作符 | (abc) 表示abc,(abc|def)表示abc,def |
| \d | 数字,等价于[0-9] | |
| \w | 单词字符,等价于[A-Za-z0-9_] |

十八:补充re
1 | #建议在正则表达式中,被比较的字符串前面加上r,不用担心转义字符的问题 |