图书目录

目 录

第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