
书名:《Python程序设计与算法基础教程(项目实训·题库·微课视频·AI赋能版)(第4版)》
ISBN:9787302723509
作者:江红、余青松
定价:65元
“十四五”国家级规划教材
提供课件,大纲,教案,教学进度表,源码、视频、AI辅助编程、实训、AI智能体等

图书推荐
体系完整、资源爆炸、AI加持、考级无忧——这本Python书,陪你从入门到精通!
1.体系全栈,小白也能轻松起飞
内容全面,包括了Python编程所有知识点,从语法、流程控制到数据结构、GUI、数据库、网络编程,层层递进,覆盖全栈内容,逻辑清晰,真正实现“从零到项目”。
2.五位一体,学练考用闭环
集教材、练习册、上机指导、在线题库、AI辅助编程于一体。1000+实例、600+习题、600+实操任务、50+综合案例,边学边练,告别纸上谈兵。
3.AI赋能,紧跟技术前沿
大篇幅融入AI辅助编程教学,新增VSCode实战,教您如何利用人工智能提升开发效率,让学习与未来接轨。
4.资源壕配,扫码即学
1100分钟微课视频、教学大纲、课件、源码、知识图谱等全套配套资源,扫码即可获取。还有近3000道在线题库,支持自动判题、教师组卷,自学or教学两相宜。
5.考级利器,通关二级必备
内置计算机等级考试二级(Python)真题+模拟题自测平台,刷题、判题、阅卷全自动,助您高效备考,一次过关!
扫码观看课程介绍
本书内容
本书集教材、练习册、上机指导、题库于一体,基于Windows 10和Python 3.10构建Python开发平台,阐述Python语言的基础知识,以及使用Python语言的实际开发应用实例,具体内容包括Python程序设计导论,Python语言基础,程序流程控制,常用内置数据类型,组合数据类型,输入、输出和文件,错误和异常处理,函数和函数式编程,面向对象的程序设计,模块和模块化程序设计,数据结构与算法基础,图形用户界面,图形绘制和数据可视化,数值日期和时间处理,字符串和文本处理,数据库访问,网络编程和通信,并行计算,系统管理以及Python计算生态等。
本书编者结合多年的程序设计、系统开发以及授课经验,由浅入深、循序渐进地介绍Python程序设计语言,让读者能够较为系统全面地掌握程序设计的理论和应用。本书提供了近1000个实例、523道习题、600多个实践操作任务、48个综合应用案例及1100分钟教学视频。
配套的练习册


扫码优惠购书
目录
第1 章 Python 程序设计导论 … … 1
1 .1 程序设计语言 .… … … 1
1 .1 .1 计算机和程序 .… … 1
1 .1 .2 程序设计和编程语言 … … … 1
1 .1 .3 计算思维和程序设计方法 … … 2
1 .1 .4 程序的编写和执行 .3
1 .2 Python 语言概述 .… … 3
1 .2.1 Python 语言简介 .… 3
1 .2.2 Python 语言的特点 .3
1 .2.3 Python 语言的应用范围 … … 4
1 .3 Python 语言版本和开发环境 … 4
1 .3 .1 Python 语言的版本 .4
1 .3 .2 Python 语言的实现 .5
1 .3 .3 Python 语言的集成开发环境 … 5
1 .3 .4 下载 Python .… … 6
1 .3 .5 安装 Python .… … 6
1 .3 .6 安装和管理 Python 扩展包 … 7
1 .4 使用 Python 解释器解释执行 Python 程序.… … 8
1 .4.1 运行 Python 解释器 .8
1 .4.2 运行 Python 集成开发环境 ..… 9
1 .5 使用文本编辑器和命令行编写和执行 Python 源文件程序 … 10
1 .5 .1 编写输出“Hello, World!”程序 ..… 11
1 .5 .2 运行 Python 源代码程序… … 11
1 .5 .3 命令行参数 .… … 13
1 .6 使用集成开发环境(IDLE) 编写和执行 Python 源文件程序 … 13
1 .6 .1 使用IDLE 编写程序 … … … 13
1 .6 .2 使用IDLE 编辑和执行程序 ..… 14
1 .7 程序的打包和发布.… 14
1 .7 .1 安装 PyInstaller .15
1 .7 .2 使用 PyInstaller 生成可执行程序 ..… 15
1 .8 在线帮助和相关资源.15
1 .8.1 Python 交互式帮助系统 … … 15
1 .8.2 Python 文档 .… … 16
1 .8.3 Python 官网 .… … 18
1 .8.4 PEP ..… 18
1 .8.5 Python 扩展库索引(PyPI) … 21
1 .9 上机实践 ..21
1 .10 案例研究1 : 安装和使用Python 科学计算环境Anaconda ..21
1 .11 案例研究2 : 安装和使用PyCharm 开发环境 .21
1 .12 案例研究3 : 安装和使用VSCode 开发环境 .22
1 .13 AI 辅助编程:Python 程序设计导论 ..22
第2 章 Python 语言基础 .23
2 .1 Python 程序概述 .… 23
2.1 .1 引例 ..… 23
2.1 .2 Python 程序构成 .23
2 .2 Python 对象和引用 .24
2.2.1 Python 对象简介 .24
2.2.2 字面量和对象的创建 … … … 24
2.2.3 创建对象的其他方法 … … … 25Ⅳ
2.2.4 数据类型 .… … … 25
2.2.5 变量和对象的引用 .26
2.2.6 Python 是动态类型语言 … … 26
2.2.7 Python 是强类型语言 … … … 27
2.2.8 对象内存示意图.… 27
2.2.9 对象的值比较( = = ) 和引用判别(is) .… … … 28
2.2.10 不可变对象(immutable) 和可变对象(mutable) … … … 28
2 .3 标识符及其命名规则.29
2.3 .1 标识符 ..29
2.3 .2 保留关键字 .… … 29
2.3 .3 Python 预定义标识符 … … … 30
2.3 .4 命名规则 .… … … 30
2 .4 变量和赋值语句 .… 31
2.4.1 变量的声明和赋值 .31
2.4.2 链式赋值语句 .… 31
2.4.3 复合赋值语句 .… 31
2.4.4 删除变量 .… … … 32
2.4.5 序列解包赋值 .… 32
2.4.6 常量 ..… 33
2 .5 表达式和运算符 .… 33
2.5 .1 表达式的组成 .… 33
2.5 .2 表达式的书写规则 .33
2.5 .3 运算符概述 .… … 34
2.5 .4 Python 运算符及其优先级 … 34
2 .6 语句 ..… … 35
2.6 .1 Python 语句 .… … 35
2.6 .2 Python 语句的书写规则 … … 35
2.6 .3 复合语句及其缩进书写规则 ..… 36
2.6 .4 注释语句 .… … … 36
2.6 .5 空语句 ..37
2 .7 函数 ..… … 37
2.7 .1 函数的创建和调用 .37
2.7 .2 内置函数 .… … … 38
2.7 .3 模块函数 .… … … 38
2.7 .4 函数 API .… … … 38
2 .8 类和对象 ..39
2.8.1 创建类对象 .… … 39
2.8.2 实例对象的创建和使用 … … 39
2 .9 模块和包 ..40
2.9 .1 模块和包的概念.… 40
2.9 .2 导入和使用模块.… 40
2 .10 综合应用: turtle 模块和海龟绘图 ..40
2.10.1 海龟绘图概述 .… 40
2.10.2 绘制正方形 .… … 41
2.10.3 海龟绘图应用实例 … … … 42
2 .11 上机实践 ..42
2 .12 案例研究: 使用 Pillow 库处理图像文件 .… … 43
2 .13 AI 辅助编程: Python 语言基础 ..… … 44
第3 章 程序流程控制 .… 45
3 .1 程序的流程 .… … … 45
3 .1 .1 输入、 处理和输出 .45
3 .1 .2 算法和数据结构.… 45
3 .1 .3 程序流程图 .… … 46
3 .2 顺序结构 ..47
3 .3 选择结构 ..47
3 .3 .1 分支结构的形式.… 48
3 .3 .2 单分支结构 .… … 48
3 .3 .3 双分支结构 .… … 48
3 .3 .4 多分支结构 .… … 49
3 .3 .5 if 语句的嵌套.… … 51
3 .3 .6 if 语句典型示例代码 … … … 51
3 .3 .7 模式匹配语句 match…case … 52
3 .3 .8 选择结构综合举例 .54
3 .4 循环结构 ..56
3 .4.1 可迭代对象 .… … 56
3 .4.2 range 对象 .… … … 56
3 .4.3 for 循环 ..56
3 .4.4 while 循环 .… … … 57
3 .4.5 循环的嵌套 .… … 58
3 .4.6 break 语句 .… … … 59
3 .4.7 continue 语句 .… … 60
3 .4.8 死循环(无限循环) .60
3 .4.9 else 子句 .… … … 61
3 .4.10 enumerate 函数和循环 … 61Ⅴ
3 .4.11 zip 函数和循环 .62
3 .4.12 map 函数和循环 … … … 62
3 .4.13 循环语句典型示例代码… … 62
3 .4.14 循环结构综合举例 … … … 63
3 .5 综合应用: turtle 模块的复杂图形绘制 ..64
3 .5 .1 绘制正方形(改进版) … … … 64
3 .5 .2 绘制圆形螺旋 .… 64
3 .6 上机实践 ..65
3 .7 案例研究: 使用嵌套循环实现图像处理算法 .… … 69
3 .8 AI 辅助编程: 程序流程控制 … 69
第4 章 常用内置数据类型 … … … 70
4.1 Python 内置数据类型概述 … 70
4.1 .1 数值数据类型 .… 70
4.1 .2 序列数据类型 .… 70
4.1 .3 集合数据类型 .… 71
4.1 .4 字典数据类型 .… 71
4.1 .5 NoneType 、NotImplementedType和 EllipsisType .… 71
4.1 .6 其他数据类型 .… 71
4.2 int 数据类型(任意精度整数) … 72
4.2.1 整型字面量 .… … 72
4.2.2 int 对象 ..72
4.2.3 int 对象的方法 .… 73
4.2.4 整数的运算 .… … 73
4.3 float 类型(有限精度浮点数) … 74
4.3 .1 浮点类型字面量.… 74
4.3 .2 float 对象 .… … … 74
4.3 .3 float 对象的方法 .75
4.3 .4 浮点数的表示和相等性比较 … 75
4.3 .5 浮点数的运算 .… 75
4.4 bool 数据类型 .… … 76
4.4.1 布尔值字面量 .… 76
4.4.2 bool 对象 .… … … 76
4.4.3 布尔值的运算 .… 76
4.5 complex 类型 .… … … 77
4.5 .1 复数字面量 .… … 77
4.5 .2 complex 对象 .… … 77
4.5 .3 complex 对象的属性和方法 ..… 77
4.5 .4 复数的运算 .… … 77
4.6 条件表达式、 关系运算符、 测试运算符和逻辑运算符.78
4.6 .1 条件表达式 .… … 78
4.6 .2 关系运算符和测试运算符 ..78
4.6 .3 逻辑运算符 .… … 79
4.7 算术运算符和位运算符 … … … 80
4.7 .1 算术运算符 .… … 80
4.7 .2 位运算符 .… … … 81
4.8 混合运算和数值类型转换 … … 81
4.8.1 隐式转换 .… … … 81
4.8.2 显式转换(强制转换) … … … 82
4.9 内置标准数学函数.… 82
4.9 .1 内置数学运算函数 .82
4.9 .2 数制转换函数 .… 83
4.10 math 模块和数学函数 … … … 83
4.10.1 math 模块的 API .83
4.10.2 math 模块应用举例 … … … 85
4.11 random 模块和随机函数 … … 86
4.11 .1 种子和随机状态 .86
4.11 .2 随机整数 .… … … 87
4.11 .3 随机序列 .… … … 87
4.12 综合应用举例 .… … 88
4.12.1 蒙特卡罗模拟: 赌徒破产命运 ..88
4.12.2 使用随机数估算圆周率… … 90
4.12.3 使用阿基米德方法估算圆周率..90
4.13 上机实践 ..91
4.14 案例研究: 科学计算和数据分析 ..… … 95
4.15 AI 辅助编程: 常用内置数据类型 ..95
第5 章 组合数据类型 .… 96
5 .1 Python 序列数据概述 … … … 96
5 .1 .1 数组 ..… 96
5 .1 .2 序列数据类型 .… 96
5 .2 序列数据的基本操作.97
5 .2.1 序列的长度、 最大值、 最小值、求和 ..… 97Ⅵ
5 .2.2 序列的索引访问操作 … … … 97
5 .2.3 序列的切片操作.… 98
5 .2.4 序列的连接和重复操作 … … 98
5 .2.5 序列的成员关系操作 … … … 99
5 .2.6 序列的比较运算操作 … … … 99
5 .2.7 序列的排序操作 .100
5 .2.8 内置函数all 和any … … 100
5 .2.9 序列的拆分操作 .100
5 .3 列表 ..… … 101
5 .3 .1 使用列表字面量创建列表实例对象 .… … … 101
5 .3 .2 使用list 对象创建列表实例对象 ..101
5 .3 .3 列表解析表达式 .102
5 .3 .4 列表的序列操作 .102
5 .3 .5 列表对象的方法 .103
5 .3 .6 列表的典型示例代码 … … 103
5 .4 元组 ..… … 104
5 .4.1 使用元组字面量创建元组实例对象 .… … … 104
5 .4.2 使用tuple 对象创建元组实例对象 .… … … 105
5 .4.3 元组的序列操作 .105
5 .4.4 元组对象的方法 .105
5 .4.5 元组的典型示例代码 … … 106
5 .5 字符串 ..… 106
5 .5 .1 使用字符串字面量创建字符串对象 .… … 107
5 .5 .2 字符串编码 .… … 107
5 .5 .3 转义字符 .… … … 107
5 .5 .4 使用内置函数str 创建字符串对象 .… … 108
5 .5 .5 字符串的序列操作 … … … 108
5 .5 .6 字符串对象的方法 … … … 109
5 .5 .7 字符串的格式化 .111
5 .5 .8 f 字符串(字符串插值) … … 114
5 .5 .9 字符串的典型示例代码 … … 115
5 .5 .10 字符串应用举例 .116
5 .6 字节序列 ..116
5 .6 .1 bytes 字面量 .… 117
5 .6 .2 创建bytes 对象 .117
5 .6 .3 创建bytearray 对象 … … … 117
5 .6 .4 bytes 和bytearray 的序列操作 ..118
5 .6 .5 字节编码和字节解码 … … 118
5 .6 .6 字节序列的典型示例代码 ..119
5 .7 字典(映射) .… … … 119
5 .7 .1 对象的哈希(hash) 值 … … 119
5 .7 .2 字典的定义 .… … 119
5 .7 .3 字典解析表达式 .120
5 .7 .4 字典的访问操作 .120
5 .7 .5 字典的视图对象 .121
5 .7 .6 字典的遍历 .… … 121
5 .7 .7 判断字典键是否存在 … … 121
5 .7 .8 字典对象的长度和比较 … … 121
5 .7 .9 字典对象的方法 .122
5 .7 .10 字典的典型示例代码 … … 122
5 .8 集合 ..… … 123
5 .8.1 集合的定义 .… … 123
5 .8.2 集合解析表达式 .124
5 .8.3 判断集合元素是否存在 … … 124
5 .8.4 集合的运算: 并集、 交集、差集和对称差集 .125
5 .8.5 集合的比较运算: 相等、子集和超集 .… … 125
5 .8.6 集合的长度、 元素最大值、元素最小值、 元素和 … … … 126
5 .8.7 可变集合的方法 .126
5 .8.8 集合的典型示例代码 … … 127
5 .9 数据类型综合应用举例 … … 127
5 .9 .1 字符串简单加密和解密 … … 127
5 .9 .2 去除列表中的重复项 … … 128
5 .9 .3 基于列表的简易花名册管理系统 .… … … 129
5 .9 .4 频数表和直方图 .130
5 .10 上机实践 .… … … 131
5 .11 案例研究: 猜单词游戏 … … … 133Ⅶ
5 .12 AI 辅助编程: 组合数据类型 ..… 134
第6 章 输入、 输出和文件 … … … 135
6 .1 输入和输出概述 .… 135
6 .2 命令行参数 .… … … 135
6 .2.1 sys.argv 与命令行参数 … … 135
6 .2.2 argparse 模块和命令行参数解析 .… … … 136
6 .3 标准输入函数和标准输出函数 ..… … 137
6 .3 .1 输入函数和输出函数 … … 137
6 .3 .2 交互式用户输入 .138
6 .3 .3 运行时提示输入密码 … … 138
6 .4 文件和文件对象 .… 139
6 .4.1 文件对象和open 函数 … … 139
6 .4.2 文件的打开、 写入、 读取和关闭 ..140
6 .4.3 with 语句和上下文管理协议 ..140
6 .5 文本文件的写入、 读取和编码 ..… … 141
6 .5 .1 文本文件的写入 .141
6 .5 .2 文本文件的读取 .142
6 .5 .3 文本文件的编码 .143
6 .6 二进制文件的写入和读取 … … 143
6 .6 .1 二进制文件的写入 … … … 143
6 .6 .2 二进制文件的读取 … … … 144
6 .7 随机文件的写入和读取 … … 145
6 .8 CSV 格式文件的读取和写入 ..… … 146
6 .8.1 CSV 格式文件和csv 模块 … 146
6 .8.2 csv.reader 对象和 CSV文件的读取 .… … 146
6 .8.3 csv. writer 对象和 CSV文件的写入 .… … 147
6 .9 对象序列化 .… … … 147
6 .9 .1 对象序列化概述 .147
6 .9 .2 pickle 模块和对象序列化 … 147
6 .9 .3 json 模块和JSON 格式数据 ..148
6 .10 os 模块和文件目录操作 … … 149
6 .11 标准输入、输出和错误流 … … 149
6 .11 .1 标准输入、 输出和错误流文件对象 .… … 149
6 .11 .2 读取任意长度的输入流 … 150
6 .11 .3 标准输入、 输出和错误流重定向 .… … … 151
6 .12 重定向和管道 .… 151
6 .12.1 重定向标准输出到一个文件 ..152
6 .12.2 重定向文件到标准输入 … 152
6 .12.3 管道 ..153
6 .12.4 过滤器 .… … … 153
6 .13 综合应用: 文件数据的统计和分析 .… … 155
6 .13 .1 统计存储在文本文件中的学生成绩信息 .155
6 .13 .2 统计存储在文本文件中的天气温度信息 .155
6 .13 .3 统计存储在 CSV 文件中的学生成绩信息 .156
6 .13 .4 基于字典的通讯录 … … … 156
6 .14 上机实践 .… … … 158
6 .15 案例研究: 21 点扑克牌游戏 ..… 162
6 .16 AI 辅助编程: 输入、 输出和文件 ..162
第7 章 错误和异常处理 … … … 163
7 .1 程序的错误 .… … … 163
7 .1 .1 语法错误 .… … … 163
7 .1 .2 运行时错误 .… … 163
7 .1 .3 逻辑错误 .… … … 164
7 .2 异常处理 ..165
7 .2.1 异常处理概述 .… 165
7 .2.2 内置的异常类 .… 165
7 .2.3 引发异常 .… … … 166
7 .2.4 捕获处理异常机制概述 … … 167
7 .2.5 Python 虚拟机捕获处理异常 ..167Ⅷ
7 .2.6 使用try…except…else…finally 语句捕获处理异常 … 167
7 .2.7 捕获异常的顺序 .168
7 .2.8 finally 块和发生异常后的处理 ..168
7 .2.9 自定义异常类 .… 169
7 .3 断言处理 ..169
7 .3 .1 断言处理概述 .… 169
7 .3 .2 assert 语句和 Asserti类 ..… 170
7 .3 .3 启用/禁用断言 .170
7 .4 程序的基本调试方法 … … … 171
7 .4.1 语法错误的调试 .171
7 .4.2 运行时错误的调试 … … … 171
7 .4.3 逻辑错误的调试 .171
7 .5 使用logging 模块记录日志 ..… … 172
7 .5 .1 logging 模块概述 .172
7 .5 .2 logging 的配置和使用 … … 173
7 .6 综合应用: 错误和异常处理 ..… … 175
7 .6 .1 两个整数的输入及求和 … … 175
7 .6 .2 打开指定的文件并显示文件的内容 .… … 176
7 .7 上机实践 ..177
7 .8 案例研究: 使用调试器调试Python 程序 .… … … 177
7 .9 AI 辅助编程: 错误和异常处理 ..177
第8 章 函数和函数式编程 … … 178
8.1 函数概述 ..178
8.1 .1 函数的基本概念 .178
8.1 .2 函数的功能 .… … 178
8.1 .3 Python 函数分类 .178
8.2 函数的声明和调用 .179
8.2.1 函数对象的创建 .179
8.2.2 函数的调用 .… … 180
8.2.3 函数的副作用 .… 181
8.2.4 lambda 表达式和匿名函数 ..181
8.3 参数的传递 .… … … 181
8.3 .1 形式参数和实际参数 … … 181
8.3 .2 形式参数变量和对象引用传递 ..182
8.3 .3 传递不可变对象的引用 … … 182
8.3 .4 传递可变对象的引用 … … 183
8.3 .5 可选参数 .… … … 183
8.3 .6 位置参数和命名参数(关键字参数) ..184
8.3 .7 可变参数(打包参数) 和解包参数 ..184
8.3 .8 强制命名参数(Keywordonly) ..186
8.3 .9 参数类型检查和类型注(annotation) .… 186
8.4 函数的返回值 .… … 187
8.4.1 return 语句和函数返回值 .… … … 187
8.4.2 多条return 语句 .188
8.4.3 返回多个值 .… … 188
8.5 变量的作用域 .… … 189
8.5 .1 全局变量 .… … … 189
8.5 .2 局部变量 .… … … 189
8.5 .3 全局语句global .190
8.5 .4 非局部语句nonlocal … … 191
8.5 .5 类成员变量 .… … 191
8.5 .6 查看局部变量和全局变量(locals 和globals 函数) … 191
8.6 递归函数 ..192
8.6 .1 递归函数的定义 .192
8.6 .2 递归函数的原理 .192
8.6 .3 编写递归函数需要注意的问题 ..193
8.6 .4 递归函数的应用: 最大公约数 .… … … 193
8.6 .5 递归函数的应用:汉诺塔 .… … … 194
8.7 内置函数的使用 .… 194
8.7 .1 内置函数一览 .… 195
8.7 .2 eval 函数(动态表达式的求值) ..195Ⅸ
8.7 .3 exec 函数(动态语句的执行) ..195
8.7 .4 compile 函数 .… 196
8.8 Python 函数式编程基础 … … 196
8.8.1 作为对象的函数 .196
8.8.2 高阶函数 .… … … 196
8.8.3 map 函数 .… … 196
8.8.4 filter 函数 .… … 197
8.8.5 operator 模块和操作符函数 ..198
8.8.6 functools.reduce 函数 … … 198
8.8.7 偏函数 .… … … 199
8.8.8 sorted 函数 .… 199
8.8.9 函数装饰器 .… … 199
8.9 综合应用: 使用turtle 模块绘制复杂的图形 .… 201
8.9 .1 绘制多边形 .… … 201
8.9 .2 递归图形 .… … … 201
8.10 上机实践 .… … … 202
8.11 案例研究: 井字棋游戏 … … 203
8.12 AI 辅助编程: 函数和函数式编程 ..… 203
第9 章 面向对象的程序设计 … 204
9 .1 面向对象的概念 .… 204
9 .1 .1 对象的定义 .… … 204
9 .1 .2 封装 ..204
9 .1 .3 继承 ..204
9 .1 .4 多态性 .… … … 204
9 .2 类对象和实例对象 .205
9 .2.1 类对象 .… … … 205
9 .2.2 实例对象 .… … … 205
9 .3 属性 ..… … 206
9 .3 .1 实例对象属性 .… 206
9 .3 .2 类对象属性 .… … 207
9 .3 .3 私有属性和公有属性 … … 207
9 .3 .4 @property 装饰器 … … … 208
9 .3 .5 特殊属性 .… … … 209
9 .3 .6 自定义属性 .… … 210
9 .4 方法 ..… … 211
9 .4.1 对象实例方法 .… 211
9 .4.2 静态方法( @staticmethod)..… … 211
9 .4.3 类方法(@classmethod) … … 212
9 .4.4 __init__ 方法和__new__方法 ..213
9 .4.5 __del__ 方法 .… 214
9 .4.6 私有方法与公有方法 … … 214
9 .4.7 方法重载 .… … … 215
9 .5 继承 ..… … 216
9 .5 .1 派生类 .… … … 216
9 .5 .2 查看继承的层次关系 … … 217
9 .5 .3 类成员的继承和重写 … … 217
9 .6 对象的特殊方法 .… 218
9 .6 .1 对象的特殊方法概述 … … 218
9 .6 .2 运算符重载与对象的特殊方法 ..218
9 .6 .3 @functools.total_ordering装饰器 .… … … 220
9 .6 .4 __call__ 方法和可调用对象 ..220
9 .7 对象的引用、 浅拷贝和深拷贝 ..… 221
9 .7 .1 对象的引用 .… … 221
9 .7 .2 对象的浅拷贝 .… 221
9 .7 .3 对象的深拷贝 .… 222
9 .8 可迭代对象: 迭代器和生成器 ..… 222
9 .8.1 可迭代对象 .… … 222
9 .8.2 迭代器 .… … … 222
9 .8.3 迭代器协议 .… … 223
9 .8.4 可迭代对象的迭代: iter函数和next 函数 … … … 223
9 .8.5 可迭代对象的迭代: for语句 ..223
9 .8.6 自定义可迭代对象和迭代器 .… … … 224
9 .8.7 生成器函数 .… … 224
9 .8.8 反向迭代: reversed迭代器 .… … … 225Ⅹ
9 .8.9 生成器表达式 .… 226
9 .8.10 range 可迭代对象 … … … 226
9 .8.11 map 迭代器和itertools.starmap 迭代器 .227
9 .8.12 filter 迭代器和itertools.filterfalse 迭代器 … … … 227
9 .8.13 zip 迭代器和itertools.zip_longest 迭代器 … … … 228
9 .8.14 enumerate 迭代器 … … … 228
9 .8.15 无穷序列迭代器itertools.count、cycle 和repeat … … 229
9 .8.16 累计迭代器itertools.accumulate .… 229
9 .8.17 级联迭代器itertools.chain ..229
9 .8.18 选择压缩迭代器itertools.compress .… … 229
9 .8.19 截取迭代器itertools.dropwhile 和takewhile … 230
9 .8.20 切片迭代器itertools.islice ..230
9 .8.21 分组迭代器itertools.groupby .… … 230
9 .8.22 返回多个迭代器itertools.tee ..231
9 .8.23 组合迭代器itertools.combinations 和combinations_with_replacement … … … 231
9 .8.24 排列迭代器itertools.permutations .… 231
9 .8.25 笛卡儿积迭代器itertools.product .… … … 232
9 .9 自定义类应用举例 .232
9 .9 .1 Color 类 .… … … 232
9 .9 .2 Histogram 类 .… 233
9 .10 上机实践 .… … … 235
9 .11 案例研究: 文本相似度比较分析 ..… 235
9 .12 AI 辅助编程: 面向对象的程序设计 .… … … 235
第10 章 模块和模块化程序设计 ..236
10.1 模块化程序设计的概念 … 236
10.1 .1 模块化程序设计 … … … 236
10.1 .2 模块的 API .236
10.1 .3 模块的实现 .237
10.1 .4 模块的客户端.238
10.1 .5 模块化程序设计的优越性 .… … 238
10.2 模块的设计和实现 … … … 238
10.2.1 模块设计的一般原则 … 238
10.2.2 API 设计 .… 239
10.2.3 创建模块 .… 239
10.2.4 模块的私有函数 … … … 239
10.2.5 模块的测试代码 … … … 240
10.2.6 编写模块文档字符串 … 241
10.2.7 按字节编译的. pyc文件 .… … … 241
10.3 模块的导入和使用 … … … 242
10.3 .1 导入模块和使用模块 .… … … 242
10.3 .2 导入模块中的成员 … … 242
10.3 .3 重新加载模块.243
10.3 .4 动态导入模块.243
10.3 .5 查看导入的模块 … … … 243
10.4 包 ..… … 244
10.4.1 包的概念 .… 244
10.4.2 创建包 .… … 244
10.4.3 包的导入和使用 … … … 245
10.5 模块的导入顺序 .245
10.5 .1 import 语句导入模块的类型 .… … … 245
10.5 .2 模块搜索路径.246
10.5 .3 导入模块时的搜索顺序 .… … … 246
10.5 .4 dir 函数 .… 247
10.6 名称空间与名称查找顺序 ..… 247
10.6 .1 名称空间概述.247Ⅺ
10.6 .2 名称查找顺序.247
10.6 .3 顶层模块和__name__变量 .… … … 248
10.6 .4 Python 解释器是顶层模块 .… … … 249
10.6 .5 全局名称空间.249
10.6 .6 局部名称空间.249
10.6 .7 类和对象名称空间 … … 250
10.7 上机实践 .… … … 250
10.8 案例研究: 基于模块的库存管理系统 .… 251
10.9 AI 辅助编程: 模块和模块化程序设计 .251
第11 章 数据结构与算法基础 … 252
11 .1 数据结构基础 .… 252
11 .1 .1 数据结构的定义 … … … 252
11 .1 .2 数据的逻辑结构 … … … 253
11 .1 .3 数据的物理结构 … … … 253
11 .1 .4 常用算法 .… 254
11 .2 常用的数据结构 .254
11 .2.1 线性表 .… … 254
11 .2.2 队列 .… … … 255
11 .2.3 栈 ..255
11 .2.4 树 ..255
11 .2.5 图 ..258
11 .2.6 堆 ..258
11 .2.7 散列表 .… … 258
11 .3 算法及其性能分析 … … … 258
11 .3 .1 算法 .… … … 258
11 .3 .2 算法的时间复杂度分析 .… … … 259
11 .3 .3 增长量级 .… 259
11 .3 .4 算法的空间复杂度分析 .… … … 260
11 .4 查找算法 .… … … 260
11 .4.1 顺序查找法 .260
11 .4.2 二分查找法 .262
11 .4.3 Python 语言提供的查找算法 .… 263
11 .5 排序算法 .… … … 263
11 .5 .1 冒泡排序法 .263
11 .5 .2 选择排序法 .264
11 .5 .3 插入排序法 .265
11 .5 .4 归并排序法 .266
11 .5 .5 快速排序法 .267
11 .5 .6 Python 语言提供的排序算法 .… … … 268
11 .6 数组 ..… 269
11 .6 .1 列表和数组 .269
11 .6 .2 array.array 对象和数组 .… … … 269
11 .7 栈和队列 .… … … 270
11 .7 .1 栈的实现: 使用列表 … 270
11 .7 .2 deque 对象 .… 271
11 .7 .3 deque 作为栈 .272
11 .7 .4 deque 作为队列 … … … 272
11 .8 collections 模块的其他数据结构 .… … … 272
11 .8.1 collections 模块概述 … … 272
11 .8.2 namedtuple 对象 … … … 272
11 .8.3 UserDict、UserList和 UserString 对象 … … 273
11 .8.4 defaultdict 对象 … … … 274
11 .8.5 OrderedDict 对象 … … 274
11 .8.6 ChainMap 对象 … … … 275
11 .8.7 Counter 对象 .276
11 .9 上机实践 .… … … 277
11 .10 案例研究: 程序运行时间度量分析 .278
11 .11 AI 辅助编程: 数据结构与算法基础 .… 279
第12 章 图形用户界面 .280
12 .1 图形用户界面概述 … … … 280
12.1 .1 tkinter .… … 280
12.1 .2 其他 GUI 库简介 … … 280
12 .2 tkinter 概述 .… … 281
12.2.1 tkinter 模块 .281
12.2.2 图形用户界面构成 … … 281
12.2.3 框架和 GUI 应用程序类 .… … 282
12.2.4 tkinter 主窗口 … … … 282Ⅻ
12 .3 几何布局管理器 .283
12.3 .1 pack 几何布局管理器..… 283
12.3 .2 grid 几何布局管理器..… 284
12.3 .3 place 几何布局管理器..… 285
12 .4 事件处理 .… … … 286
12.4.1 事件类型 .… 286
12.4.2 事件绑定 .… 286
12.4.3 事件处理函数.287
12 .5 常用组件 .… … … 287
12.5 .1 Label(标签) .287
12.5 .2 LabelFrame(标签框架) .… … … 288
12.5 .3 Button(按钮) .288
12.5 .4 Message(消息) … … … 289
12.5 .5 Entry(单行文本框) … … 290
12.5 .6 Text(多行文本框) … … 290
12.5 .7 Radiobutton(单选按钮) .… … … 291
12.5 .8 Checkbutton(复选框) … 292
12.5 .9 Listbox(列表框) … … … 293
12.5 .10 OptionMenu(选择项)..295
12.5 .11 Scale(移动滑块) … … 296
12.5 .12 Toplevel(顶层窗口)..297
12.5 .13 ttk(子模块控件) … … 297
12 .6 对话框 ..297
12.6 .1 通用消息对话框 … … … 298
12.6 .2 文件对话框 .299
12.6 .3 颜色选择对话框 … … … 299
12.6 .4 通用对话框应用举例 … 299
12.6 .5 简单对话框 .301
12 .7 菜单和工具栏 .… 302
12.7 .1 创建主菜单 .302
12.7 .2 创建上下文菜单 … … … 303
12.7 .3 菜单应用举例.304
12 .8 基于 wxPython 的图形用户界面设计入门 … … … 306
12.8.1 wxPython 概述 … … … 306
12.8.2 安装 wxPython 库 … … 306
12.8.3 wxPython 应用程序的基本架构 .… 307
12.8.4 使用 wxPython 开发简易文本编辑器 … … … 307
12 .9 上机实践 .… … … 309
12 .10 案例研究: 简易图形用户界面计算器.309
12 .11 AI 辅助编程: 图形用户界面 ..309
第13 章 图形绘制和数据可视化...310
13 .1 Python 绘图模块概述 … … 310
13 .2 Matplotlib 模块 .310
13 .2.1 Matplotlib 模块概述 … … 310
13 .2.2 图形显示: 用户界面后端 .… … … 311
13 .2.3 输出格式: 硬拷贝后端 .… … … 311
13 .2.4 Matplotlib 的特点 … … 312
13 .2.5 安装 Matplotlib … … … 312
13 .3 Matplotlib 基本绘图 … … 312
13 .3 .1 绘制折线图: 使用一个列表数据 .… 312
13 .3 .2 绘制折线图: 使用两个列表数据 .… 313
13 .3 .3 绘制多条曲线图 … … … 313
13 .3 .4 设置坐标轴范围 … … … 314
13 .3 .5 设置坐标轴标题和图表标题 .… 315
13 .3 .6 设置图例 .… 315
13 .3 .7 保存图形到文件 … … … 315
13 .3 .8 基本绘图应用举例 … … 315
13 .4 常用图表类型的绘制 … … 316
13 .4.1 选择图表类型.316
13 .4.2 条形图 .… … 316
13 .4.3 饼图 .… … … 317
13 .4.4 散点图 .… … 319
13 .4.5 直方图 .… … 319
13 .5 面向对象的 Matplotlib绘图 ..… 320
13 .5 .1 面向对象的绘图 … … … 320
13 .5 .2 绘制多个子图.321
13 .6 上机实践 .… … … 322
13 .7 案例研究: 汉诺塔问题求解动画 .… … … 323
13 .8 AI 辅助编程: 图形绘制和数据可视化 .… 323
第14 章 数值日期和时间处理..324
14.1 相关模块概述 .… 324
14.1 .1 数值处理的相关模块 … 324
14.1 .2 日期和时间处理的相关模块 .… … … 324
14.2 cmath 模块和复数数学函数 ..… 324
14.3 数值运算模块 NumPy … … 326
14.3 .1 数值运算模块的基本使用 .… … … 326
14.3 .2 创建数组 .… 326
14.3 .3 处理数组 .… 327
14.3 .4 数组应用举例.327
14.4 日期和时间处理 .328
14.4.1 相关术语 .… 328
14.4.2 时间对象 .… 328
14.4.3 测量程序运行时间 … … 329
14.4.4 日期对象 .… 329
14.4.5 获取当前日期和时间 … 330
14.4.6 日期和时间格式化为字符串 .… … 330
14.4.7 日期和时间字符串解析为日期和时间对象 … … … 330
14.5 综合应用举例 .… 331
14.6 上机实践 .… … … 332
14.7 案例研究: 使用pandas进行数据分析和处理 … … 333
14.8 AI 辅助编程: 数值日期和时间处理 .… … … 334
第15 章 字符串和文本处理 … … 335
15 .1 相关模块概述 .… 335
15 .1 .1 字符串和文本处理的相关模块 .… 335
15 .1 .2 字符串处理概述的常用方法 .… … … 335
15 .2 正则表达式 .… … 335
15 .2.1 正则表达式语言概述 … 336
15 .2.2 正则表达式引擎 … … … 336
15 .2.3 普通字符和转义字符 … 336
15 .2.4 字符类和预定义字符类 .… … 337
15 .2.5 边界匹配符 .337
15 .2.6 重复限定符 .338
15 .2.7 匹配算法: 贪婪和懒惰 .… … … 338
15 .2.8 选择分支 .… 339
15 .2.9 分组和向后引用 … … … 339
15 .2.10 正则表达式的匹配模式.… … … 341
15 .2.11 常用正则表达式 … … 341
15 .3 正则表达式模块re … … … 341
15 .3 .1 匹配和搜索函数 … … … 341
15 .3 .2 匹配选项 .… 342
15 .3 .3 正则表达式对象 … … … 342
15 .3 .4 匹配对象 .… 343
15 .3 .5 匹配和替换 .343
15 .3 .6 分隔字符串 .344
15 .4 正则表达式应用举例 … … 344
15 .4.1 字符串包含验证 … … … 344
15 .4.2 字符串查找和拆分 … … 345
15 .4.3 字符串替换和清除 … … 345
15 .4.4 字符串查找和截取 … … 345
15 .5 中文分词库jieba .346
15 .5 .1 安装jieba 库 .346
15 .5 .2 jieba 库的分词模式和常用函数 .… 346
15 .5 .3 使用jieba 库分析统计中文文档 .… 347
15 .6 词云库 Wordcloud … … … 348
15 .6 .1 安装 Wordcloud … … … 348
15 .6 .2 Wordcloud 库的 API … 348
15 .6 .3 定制词云图的绘制参数 .… … … 348
15 .6 .4 使用 Wordcloud 库显示中文词云图 .350
15 .7 综合应用举例 .… 351
15 .7 .1 文本统计 .… 351
15 .7 .2 基因预测 .… 352
15 .8 上机实践 .… … … 353
15 .9 案例研究: NLTK 与自然语言处理 .… 354
15 .10 AI 辅助编程: 字符串和文本处理 .… 355
第16 章 数据库访问 .… 356
16 .1 数据库基础 .… … 356
16 .1 .1 数据库的概念.356
16 .1 .2 数据库模型 .356
16 .1 .3 关系数据库 .358
16 .2 Python 数据库访问模块 … 359
16 .2.1 通用数据库访问模块 .… … … 359
16 .2.2 专用数据库访问模块 .… … … 359
16 .2.3 SQLite 数据库和sqlite3模块 .… … … 359
16 .3 使用sqlite3 模块连接和操作SQLite 数据库 … … … 360
16 .3 .1 访问数据库的典型步骤 .… … … 360
16 .3 .2 创建数据库和表 … … … 362
16 .3 .3 数据库表的插入、 更新和删除操作 .362
16 .3 .4 数据库表的查询操作 … 363
16 .4 使用SQLiteStudio 查看和维护SQLite 数据库 … … 363
16 .5 上机实践 .… … … 364
16 .6 案例研究1 : 基于数据库和GUI 的教务管理系统 … … … 364
16.7 案例研究2: 基于 MySQL 的库存管理系统 .… … 364
16.8 AI 辅助编程: 数据库访问 ..… 365
第17 章 网络编程和通信 … … … 366
17.1 网络编程的基本概念 … … … 366
17.1.1 网络基础知识 .366
17.1.2 TCP/IP 简介 .… 366
17.1.3 IP 地址和域名 .367
17.1.4 统一资源定位器 … … … 368
17.2 基于socket 的网络编程 ..… 369
17.2.1 socket 概述 .… 369
17.2.2 创建socket 对象 … … … 370
17.2.3 将服务器端socket 绑定到指定地址上 .… 370
17.2.4 服务器端socket 开始侦听..371
17.2.5 连接和接收连接 … … … 371
17.2.6 发送和接收数据 … … … 372
17.2.7 简单 TCP 程序:Echo Server .… 372
17.2.8 简单 UDP 程序:
Echo Server .… 373
17.2.9 UDP 程序: QuoteServer .… … … 374
17.3 基于urllib 的网络编程 … … 375
17 .3 .1 打开和读取 URL 网络资源 .… … … 375
17 .3 .2 创建 Request 对象 … … 375
17 .4 基于http 的网络编程 … … 376
17 .5 基于ftplib 的网络编程 … … 376
17 .6 基于poplib 和smtplib 的网络编程 .… … … 378
17 .6 .1 使用poplib 接收邮件 .… … … 378
17 .6 .2 使用smtplib 发送邮件 .… … … 378
17 .7 上机实践 .… … … 379
17 .8 案例研究: 网络爬虫实现案例 ..… 379
17 .9 AI 辅助编程: 网络编程和通信 ..380
第18 章 并行计算: 进程、 线程和协程 ..381
18.1 并行处理概述 .… 381
18.1 .1 进程、 线程和协程 … … 381
18.1 .2 Python 语言与并行处理相关模块.382
18.2 基于线程的并发处理 … … 382
18.2.1 threading 模块概述 … … 382
18.2.2 使用 Thread 对象创建线程 .… … … 383
18.2.3 自定义派生于 Thread 的对象 .… … … 384
18.2.4 线程加入 .… 384
18.2.5 用户线程和daemon线程 .… … … 385
18.2.6 Timer 线程.… 386
18.2.7 基于原语锁的简单同步 .… … … 387
18.2.8 基于条件变量的同步和通信 .… … 388
18.2.9 基于queue 模块中队列的同步 .… … 389
18.2.10 基于 Event 的同步和通信 .… … 390
18.3 基于进程的并行计算 … … 390
18.3 .1 multiprocessing 模块概述 .… … … 390
18.3 .2 创建和使用进程 … … … 391
18.3 .3 进程的数据共享 … … … 392
18.3 .4 进程池 .… … 393
18.4 基于线程池/进程池的并发和并行任务 .394
18.4.1 concurrent.futures模块概述 .… 394
18.4.2 使用 ThreadPoolExecutor并发执行任务.395
18.4.3 使用 ProcessPoolExecutor并发执行任务.396
18.5 基于asyncio 的异步IO编程 ..… 397
18.5 .1 asyncio 模块概述 … … 397
18.5 .2 创建协程对象.397
18.5 .3 创建任务对象.398
18.6 应用举例 .… … … 398
18.6 .1 使用 Pool 并行计算查找素数 .… 398
18.6 .2 使用 ProcessPoolExecutor并行判断素数.399
18.6 .3 使用 ThreadPoolExecutor多线程爬取网页 … … … 400
18.7 上机实践 .… … … 402
18.8 案例研究: 文本统计并行处理 ..… 402
18.9 AI 辅助编程: 并行计算 … 402
第19 章 系统管理 .… … 403
19 .1 系统管理相关模块 … … … 403
19 .2 目录、 文件和磁盘的基本操作 .… … … 403
19 .2.1 创建目录 .… 403
19 .2.2 临时目录和文件的创建 .… … … 403
19 .2.3 切换和获取当前工作目录 .… … … 404
19 .2.4 目录内容列表.404
19 .2.5 文件通配符和glob.glob 函数.… 404
19 .2.6 遍历目录和os. walk函数 .… … … 404
19 .2.7 判断文件/目录是否存在 .… … … 405
19 .2.8 测试文件类型.405
19 .2.9 文件的日期及大小 … … 405
19 .2.10 文件和目录的删除 … … 406
19 .2.11 文件和目录的复制、重命名和移动 … … … 406
19 .2.12 磁盘的基本操作 … … 407
19 .3 执行操作系统命令和运行其他程序 .… … … 407
19 .3 .1 os.system 函数 … … 407
19 .3 .2 os. popen 函数 … … … 407
19 .3 .3 subprocess 模块 … … … 407
19 .4 获取终端的大小 .408
19 .5 文件的压缩和解压缩 … … 409
19 .5 .1 shutil 模块支持的压缩和解压缩格式.409
19 .5 .2 make_archive 函数和文件压缩 .409
19 .5 .3 unpack_archive 函数和文件解压缩.410
19 .6 configparser 模块和配置文件 ..… 410
19 .6 .1 INI 文件及INI 文件格式 .… … … 410
19 .6 .2 ConfigParser 对象和INI 文件操作 … … … 410
19 .7 应用举例 .… … … 412
19 .7 .1 病毒扫描 .… 412
19 .7 .2 文件目录树 .413
19 .8 上机实践 .… … … 413
19 .9 案例研究1 : 简易图形用户界面压缩软件 … … … 413
19 .10 案例研究2 : 使用scikitlearn 进行机器学习 … … 414
19 .11 AI 辅助编程: 系统管理 … 414
附录 A Python 计算生态 .… 415
参考文献 ...416
课件样例

思政教案样例

多学时教学进度表




AI辅助编程电子书样例




视频样例
实例讲解
Python程序设计与算法基础教程