目 录
第1章 初识Python·································1
1.1 Python简史····································1
1.2 Python的优缺点·····························1
1.3 Python的版本·································2
1.4 Python的应用领域··························2
1.5 Python环境的安装和运行················3
1.5.1 Python的下载与安装···················3
1.5.2 IDLE环境的使用·······················5
1.6 其他工具介绍································9
第2章 Python基础知识·························12
案例1 便捷水果店
2.1 数值类型·····································13
2.1.1 整型····································13
2.1.2 浮点型·································13
2.1.3 复数类型······························14
2.1.4 布尔类型······························15
2.1.5 类型转换······························15
2.2 常量和变量··································16
2.2.1 变量的命名规则······················16
2.2.2 变量的引用····························18
2.3 数值运算·····································19
2.3.1 算术运算符····························19
2.3.2 赋值运算符····························20
2.3.3 关系运算符····························22
2.3.4 逻辑运算符····························22
2.3.5 运算符的优先级······················24
2.4 字符串········································24
2.4.1 字符串的定义·························25
2.4.2 字符串的基本操作···················25
2.5 格式化输入和输出························27
2.5.1 输入函数input()·······················28
2.5.2 eval()函数·····························29
2.5.3 多个变量的输入······················30
2.5.4 输出函数print()·······················31
2.5.5 字符串格式化format()方法··········32
2.5.6 字符串格式化占位符%··············35
2.6 Tkinter图形界面开发····················36
2.6.1 第一个Tkinter程序:创建窗口·····37
2.6.2 标签(Label)····························38
2.6.3 文本框(Entry)·························40
2.6.4 列表框(Listbox)·······················42
2.6.5 按钮(Button)··························44
2.6.6 多行文本框(Text)·····················47
2.6.7 单选按钮(Radiobutton)··············48
2.6.8 复选框(Checkbutton)·················49
2.6.9 画布(Canvas)··························52
2.6.10 菜单···································52
2.6.11 对话框································55
2.6.12 Tkinter几何布局管理器············57
第3章 控制结构····································63
案例2 健康小助手BMI
3.1 控制结构概述······························64
3.2 顺序结构·····································64
3.3 分支结构·····································65
3.3.1 单分支选择结构······················66
3.3.2 双分支选择结构······················67
3.3.3 多分支选择结构······················69
3.3.4 if语句的嵌套··························72
3.4 循环结构·····································75
3.4.1 while循环······························75
3.4.2 for循环·································79
3.5 跳转语句·····································82
3.6 异常处理·····································84
3.7 循环嵌套·····································87
3.8 设计实现BMI健康小助手··············90
第4章 字符串及其方法··························94
案例3 居民身份证
4.1 字符串········································94
4.1.1 字符串的定义·························95
4.1.2 转义字符······························95
4.1.3 不换行输出····························96
4.2 字符串的索引与切片····················97
4.2.1 字符串的索引·························97
4.2.2 字符串的切片·························97
4.3 字符串的方法······························99
4.3.1 方法····································99
4.3.2 字符串替换replace()·················99
4.3.3 字符串分割split()····················100
4.3.4 去除字符串两侧字符strip()········100
4.3.5 用指定的字符连接生成新字符串
join()··································100
4.3.6 查找子字符串find()·················100
4.4 字符串的格式化输出···················105
4.4.1 占位符%······························105
4.4.2 format()方法··························106
4.4.3 f-strings·······························106
第5章 函数··········································111
案例4 通讯录
5.1 为什么需要函数··························111
5.2 函数的定义·································113
5.2.1 无参函数的定义与调用············114
5.2.2 有参函数的定义与调用············115
5.3 函数的参数传递··························117
5.3.1 位置参数·····························117
5.3.2 关键字参数···························118
5.3.3 默认参数·····························118
5.3.4 不定长参数···························119
5.4 函数的返回值·····························120
5.5 函数的特殊形式··························121
5.5.1 匿名函数·····························121
5.5.2 递归函数·····························121
5.6 变量的作用域·····························123
5.6.1 局部变量·····························123
5.6.2 全局变量·····························123
5.7 文件的操作·································125
5.7.1 文件的路径···························125
5.7.2 文件的分类···························125
5.7.3 文件的写入···························126
5.7.4 文件的读取···························129
5.7.5 文件的定位读取·····················131
5.7.6 文件的重命名和删除···············132
5.7.7 目录操作·····························132
5.7.8 文件路径操作························134
第6章 组合数据类型···························139
案例5 词频统计
6.1 文件的操作·································141
6.1.1 文件对象的常用方法···············141
6.1.2 上下文管理语句with················143
6.2 正则表达式re模块·······················146
6.2.1 正则表达式基础知识···············146
6.2.2 re模块·································149
6.3 列表···········································153
6.3.1 列表的创建···························153
6.3.2 列表元素的访问·····················154
6.3.3 列表的遍历···························154
6.3.4 列表的排序···························155
6.3.5 列表的基本操作·····················156
6.3.6 嵌套列表·····························159
6.3.7 综合案例:随机扑克牌············159
6.4 元组···········································162
6.4.1 元组的创建···························162
6.4.2 元组元素的访问·····················163
6.4.3 元组的修改···························163
6.4.4 元组的删除···························164
6.5 集合···········································166
6.5.1 集合的创建···························166
6.5.2 集合元素的添加·····················167
6.5.3 集合元素的删除·····················167
6.5.4 集合类型的操作符··················168
6.5.5 过滤函数filter()······················171
6.6 字典···········································173
6.6.1 字典的创建···························174
6.6.2 字典元素的访问·····················174
6.6.3 字典的基本操作·····················175
6.6.4 字典的高级应用·····················179
6.7 第三方模块的安装和使用·············181
6.7.1 模块···································182
6.7.2 第三方模块的下载与安装·········186
6.7.3 jieba库································188
6.7.4 wordcloud库··························191
6.7.5 matplotlib库··························193
6.8 组合数据类型的高级特性·············197
6.8.1 迭代···································197
6.8.2 推导式································199
6.8.3 zip()、map()和filter()···············200
第7章 面向对象程序设计·····················206
案例6 电子宠物
7.1 面向对象概述·····························207
7.2 面向对象的基本概念···················207
7.3 类与对象····································209
7.3.1 类与对象的关系·····················209
7.3.2 创建和使用类························210
7.4 类的属性访问·····························216
7.5 封装机制及实现方法···················218
7.5.1 封装的机制···························218
7.5.2 封装的实现···························219
7.6 类属性和实例属性·······················221
7.7 类方法、静态方法和实例方法······224
7.8 继承···········································226
7.8.1 单继承································227
7.8.2 多继承································228
7.8.3 方法的重写···························230
7.8.4 调用父类的方法·····················231
7.9 多态···········································233
第8章 turtle库及其应用·····················238
案例7 神奇的抽象画
8.1 turtle库·······································239
8.2 turtle库的基本用法······················239
8.2.1 移动函数·····························240
8.2.2 颜色控制函数························244
8.2.3 turtle的空间坐标·····················246
8.2.4 画笔状态函数························247
8.3 随机函数····································249
8.4 turtle的高阶用法··························251
8.4.1 颜色填充·····························251
8.4.2 生成随机颜色························253
8.4.3 常用绘制函数························254
8.4.4 获取“海龟”的状态···············256
第9章 pygame库及其应用·················260
案例8 大球吃小球游戏
9.1 pygame基础知识·························261
9.1.1 安装pygame库·······················261
9.1.2 pygame的初始化和退出············261
9.1.3 创建游戏窗口························262
9.1.4 游戏循环·····························264
9.1.5 事件与事件处理·····················264
9.1.6 绘制图形图像························266
9.1.7 pygame的窗体坐标体系············267
9.1.8 pygame的字体·······················269
9.2 模块化编程·································273
9.2.1 游戏的模块划分·····················273
9.2.2 游戏的实现···························274
第10章 数据分析与可视化···················282
案例9 中国城市数据
10.1 Jupyter Notebook························284
10.1.1 Anaconda的安装··················284
10.1.2 Jupyter Notebook的常用功能···287
10.2 初识pandas库····························293
10.2.1 一维数组Series···················294
10.2.2 二维数组DataFrame··············294
10.3 运用pandas库完成文件的操作·····295
10.3.1 CSV文件的读写··················295
10.3.2 选取部分行和列··················297
10.3.3 删除部分行和列··················302
10.4 运用pandas库完成数据分析········304
10.4.1 索引和排序·······················304
10.4.2 分组································305
10.4.3 分割与合并·······················307
10.4.4 数据透视表·······················308
10.5 运用pandas库完成数据清洗········311
10.5.1 缺失值处理·······················312
10.5.2 重复值去重·······················316
10.6 运用matplotlib库完成数据
可视化······································320
10.6.1 导入pyplot模块···················322
10.6.2 切分绘图区域·····················322
10.6.3 pyplot.plot()绘图函数············323
10.6.4 柱状图·····························331
10.6.5 折线图·····························334
10.6.6 饼图································335
10.6.7 散点图·····························336
第11章 Python网络爬虫····················344
案例10 豆瓣网电影信息的爬取
11.1 网络爬虫的概念························345
11.2 网络爬虫的工作流程··················346
11.3 通过requests库获取网页数据·······348
11.3.1 requests库简介····················349
11.3.2 requests库的常用方法···········349
11.4 通过urllib库获取网页数据··········354
11.4.1 urllib库简介·······················354
11.4.2 urllib库的基本使用···············354
11.5 通过BeautifulSoup解析网页········361
11.5.1 beautifulsoup4库简介············361
11.5.2 beautifulsoup4库的使用·········362
11.6 通过XPath解析网页···················370
11.6.1 XPath基本语法···················370
11.6.2 XPath谓语表达式················372
11.6.3 XPath常用的功能函数···········373
11.6.4 XPath的使用······················373
11.7 数据存储··································377
11.7.1 保存于CSV文件··················377
11.7.2 保存于JSON文件·················382
参考文献··············································387