本书以Python知识脉络为线索,结合Python生态系统,通过融合传统文化、历史人文等元素的实践案例,力求在轻松的氛围中培养学习者的程序设计能力和计算思维能力。
全书共分10章,主要内容包括搭建编程环境、基础语法、流程控制语句、字符串、列表元组与字典、函数、访问文件、处理异常、模块与包、面向对象编程等。本书各章采用模块化组织,除了具体知识细节的梳理铺陈,每章都会介绍相关的Python库,并提供多个案例对全章所学知识做综合演练,通过拓展实践进一步提升读者的实操能力。
1.除介绍Python语言编程应用外,还强化计算思维能力培养,将计算思维融入具体语言实践中。
2.各章采用模块化组织,除了具体知识,每章都会介绍相关的Python库,之后有案例来实践所学的知识,在实践过程中融入思维训练。
3.内容详细、案例实用。教学、习题和实践选用的案例实用、丰富和典型。
4.丰富的配套资源。有配套在线课程,其中包括视频讲解、习题实验、多媒体课件、资源素材等。
王静红,博士,河北师范大学三级教授,河北省有突出贡献中青年专家,河北省新世纪“三三三”人才,河北省信息化专家委员会委员,河北省大数据学会秘书长,国际IEEE高级会员,中国人工智能学会专委会委员,石家庄市拔尖人才,石家庄市十佳青年教师,河北省人工智能学会理事,中国计算机CCF石家庄执委。美国常青藤大学,伊利诺伊州大学厄巴纳-香槟分校(UIUC)高级访问学者。 主持的省科技攻关项目获河北省科技进步二等奖。教学名师、学术带头人、中青年骨干教师。先后在《Pattern Recognition and Artificial Intelligence》、《Journal of Zhejiang University》、《计算机研究与发展》等国内外科技刊物发表论文50多篇,其中30余篇被SCI、EI检索收录。科研方向为大数据与数据挖掘、人工智能、模式识别、计算机应用等。
目录
第 1章 搭建编程环境 1
1.1 初识Python 1
1.2 理解Python解释器 2
1.3 熟悉Python自带的编程环境 2
1.3.1 安装Python解释器 2
1.3.2 Python自带编程环境简介 3
1.4 Python的集成开发环境简介 5
1.4.1 PyCharm简介 5
1.4.2 Visual Studio Code简介 8
1.4.3 Jupyter Notebook简介 9
1.4.4 Thonny简介 10
1.5 Python生态之turtle库 10
1.5.1 小海龟的坐标系 11
1.5.2 小海龟的常用方法 12
1.6 小试牛刀 16
1.6.1 绘制一朵向日葵 16
1.6.2 绘制多彩的螺旋 17
1.7 拓展实践:使用海龟绘制京剧脸谱 18
1.7.1 绘制前的预备工作 18
1.7.2 绘制脸谱代码解析 19
1.7.3 为绘制的脸谱题字 21
本章小结 22
思考与练习 22
第 2章 基础语法概述 23
2.1 Python语法规范 23
2.1.1 大小写 23
2.1.2 缩进 23
2.1.3 注释 24
2.1.4 留白 25
2.1.5 换行 25
2.2 变量和数据类型 27
2.2.1 变量 27
2.2.2 数据类型 28
2.2.3 类型转换 30
2.3 常见运算符 31
2.3.1 算术运算符 31
2.3.2 赋值运算符 32
2.3.3 复合赋值运算符 32
2.3.4 比较运算符 32
2.3.5 逻辑运算符 33
2.3.6 成员运算符 33
2.3.7 运算符的优先级 34
2.4 输入与输出 34
2.4.1 输出函数print() 34
2.4.2 输入函数input() 35
2.5 Python生态之math库 36
2.5.1 访问math库文档 36
2.5.2 math库函数举例 37
2.6 小试牛刀 38
2.6.1 什么样的密码更安全 38
2.6.2 人体内大约有多少个水分子 39
2.6.3 多一份备份,多几分保障 39
2.6.4 如何换算座位号 40
2.6.5 日出时间是多少 40
2.7 拓展实践:模拟自动售货机找零 42
2.7.1 问题描述 42
2.7.2 IPO建构法 42
2.7.3 分解问题 42
2.7.4 编写程序 43
2.7.5 测试代码 44
本章小结 44
思考与练习 44
第3章 流程控制语句 45
3.1 选择结构:if语句 45
3.1.1 if语句的基本形式 45
3.1.2 if语句中的条件表达式 48
3.1.3 if语句的嵌套 51
3.2 循环结构:while与for语句 51
3.2.1 while语句 51
3.2.2 for语句 53
3.2.3 循环结构的嵌套 55
3.3 循环结构:break与continue语句 56
3.3.1 break语句 57
3.3.2 continue语句 58
3.3.3 循环结构的else分支 58
3.4 pass语句 59
3.5 Python生态之random库 60
3.5.1 随机小数 60
3.5.2 随机整数 61
3.5.3 随机抽样 61
3.5.4 洗牌 62
3.6 小试牛刀 63
3.6.1 计算人体BMI指数 63
3.6.2 伯努利试验不白努力 64
3.6.3 模拟布朗运动 65
3.6.4 羊与汽车的距离是一念之差 66
3.6.5 《少年中国说》案例进阶版 67
3.7 拓展实践:随机数是如何生成的 71
3.7.1 计算机中的随机数真的随机吗 71
3.7.2 实现一个伪随机数生成器 71
3.7.3 去掉伪随机数算法的伪装 72
3.7.4 衡量伪随机数的随机性 72
本章小结 74
思考与练习 75
第4章 字符串 76
4.1 认识字符串 76
4.1.1 字符串 76
4.1.2 转义字符 77
4.1.3 字符串的运算符 78
4.1.4 字符的编码 78
4.2 字符串的格式化 79
4.2.1 字符串的format()方法 79
4.2.2 格式化字符串字面值 81
4.2.3 Python 2.x的格式化方法 81
4.3 字符串的切片 81
4.3.1 字符串是字符构成的序列 81
4.3.2 字符串的切片 82
4.3.3 字符串是不可修改的 83
4.4 字符串的常用方法 83
4.4.1 find()方法 84
4.4.2 index()方法 84
4.4.3 count()方法 84
4.4.4 replace()方法 85
4.4.5 split()与join()方法 85
4.5 Python生态之xml库 86
4.5.1 XML是什么 86
4.5.2 解析XML数据 87
4.6 小试牛刀 90
4.6.1 模拟诗词飞花令 90
4.6.2 输出乘法口诀表 91
4.6.3 模拟传输校验码 93
4.6.4 名画知识问答 96
4.7 拓展实践:综合运用字符串的方法 97
4.7.1 猜单词小游戏 98
4.7.2 游戏的分析与初步实现 99
4.7.3 游戏代码的完善 102
本章小结 104
思考与练习 105
第5章 列表、元组与字典 106
5.1 列表 106
5.1.1 认识列表 106
5.1.2 遍历列表 108
5.1.3 列表的运算符 109
5.2 列表元素的操作 109
5.2.1 元素最值 110
5.2.2 增加元素 110
5.2.3 修改元素 111
5.2.4 删除元素 111
5.2.5 元素排序 114
5.3 元组 115
5.3.1 认识元组 115
5.3.2 遍历元组 115
5.4 字典 116
5.4.1 认识字典 116
5.4.2 字典的常见操作 117
5.5 Python生态之jieba库 121
5.5.1 jieba库的安装 121
5.5.2 分词的基本操作 121
5.5.3 词频统计 122
5.6 小试牛刀 124
5.6.1 随机分配办公室 124
5.6.2 模拟婚介 125
5.6.3 模拟抽奖 126
5.6.4 谁是天际社交达人 127
5.7 拓展实践:让机器理解文章的相似性 130
5.7.1 文本的精确比对 130
5.7.2 相似度与散点图 130
5.7.3 散点图的实现 131
5.7.4 自然语言处理与人工智能 138
本章小结 139
思考与练习 139
第6章 函数 140
6.1 函数的定义和调用 140
6.1.1 函数定义 140
6.1.2 函数的意义 141
6.1.3 函数的调用 143
6.1.4 函数的帮助信息 145
6.2 函数的参数与返回值 146
6.2.1 深入理解参数 146
6.2.2 函数的返回值 149
6.2.3 四种函数类型 151
6.3 函数的嵌套调用与变量作用域 152
6.3.1 函数的嵌套调用 152
6.3.2 变量的作用域 155
6.4 递归 159
6.4.1 函数的递归 159
6.4.2 理解递归思想 160
6.4.3 日常生活中的递归 161
6.5 Python生态之time库 162
6.5.1 时间戳 162
6.5.2 时间结构体与格式符 162
6.5.3 其他常用时间函数 164
6.6 小试牛刀 165
6.6.1 使用迭代公式求π 165
6.6.2 模拟比萨计价 166
6.6.3 重构蒙提霍尔三门问题 167
6.6.4 判断元素个数是否为偶数 168
6.6.5 模拟二十四节气倒计时 168
6.7 拓展实践:利用递归绘制分形图案 171
6.7.1 什么是分形图案 171
6.7.2 绘制一棵树 172
6.7.3 绘制科克曲线 176
本章小结 178
思考与练习 178
第7章 访问文件 179
7.1 文件的使用流程 179
7.1.1 为什么要使用文件 179
7.1.2 如何使用文件 179
7.1.3 open()函数的使用 179
7.2 文件的读写操作 181
7.2.1 读取文本文件 181
7.2.2 写入文本文件 182
7.2.3 with语句 183
7.3 Python生态之os库 183
7.3.1 文件改名 184
7.3.2 删除文件 184
7.3.3 文件夹相关操作 184
7.4 小试牛刀 186
7.4.1 使用配置文件保存比萨定价 186
7.4.2 去掉重复姓名 187
7.4.3 文件批量重命名 188
7.5 拓展实践:根据订单数据生成销售报告 189
7.5.1 问题描述 189
7.5.2 思路分析 190
7.5.3 代码实现 190
本章小结 192
思考与练习 192
第8章 处理异常 194
8.1 异常的基础知识 194
8.1.1 异常是什么 194
8.1.2 异常处理的语法结构 194
8.2 异常的种类 197
8.2.1 内置的常见异常种类 197
8.2.2 Exception异常类 197
8.2.3 自定义异常 198
8.3 主动抛出异常 198
8.3.1 用raise语句上报异常 198
8.3.2 用assert语句调试程序 199
8.4 Python生态之shutil库 200
8.4.1 使用copy()函数复制文件 200
8.4.2 使用copy2()函数复制文件的元数据 201
8.4.3 shutil库的其他函数简介 202
8.5 小试牛刀 202
8.5.1 绘制历史名人时间线 202
8.5.2 批量归纳图片文件 205
8.6 拓展实践:给程序做个彩超 207
8.6.1 百思不得其解的bug 207
8.6.2 使用断点逐步调试程序 208
本章小结 211
思考与练习 211
第9章 模块与包 212
9.1 模块与包的本质 212
9.2 库的安装与导入 213
9.2.1 使用pip安装第三方库 213
9.2.2 导入模块的不同形式 214
9.3 Python生态 之Pygame库 216
9.3.1 初识Pygame 216
9.3.2 搭建游戏主框架 216
9.3.3 完善游戏细节 217
9.4 小试牛刀 221
9.4.1 游戏预备工作 221
9.4.2 游戏主循环 223
9.5 拓展实践:使用模块组织代码 226
9.5.1 多样的投票模式 226
9.5.2 一个具体的投票问题 226
9.5.3 模块vote_tools 227
9.5.4 模块vote_methods 228
9.5.5 导入自定义的模块 230
本章小结 231
思考与练习 231
第 10章 面向对象编程 232
10.1 面向对象简介 232
10.2 类、对象与封装 234
10.2.1 定义一个类 234
10.2.2 对象实例化过程 235
10.2.3 访问控制 236
10.3 继承与多态 237
10.3.1 继承的基本形式 237
10.3.2 方法的覆盖 239
10.3.3 多态和鸭子类型 240
10.4 Python生态之tkinter库 241
10.4.1 初识tkinter 241
10.4.2 生成窗体与标签 242
10.4.3 生成文本框与按钮 243
10.5 小试牛刀 244
10.5.1 使用类重构历史时间线案例 244
10.5.2 使用tkinter设计打地鼠游戏 246
10.6 拓展实践:试一把面向对象编程 250
10.6.1 识别对象与类 250
10.6.2 使用设计模式 251
10.6.3 使用模块和包 252
本章小结 253
思考与练习 254