《Python 3.x入门到应用实践》
Python 3.x入门到应用实践
赵 军 等编著
前 言
用一句话形容近些年崛起的Python程序设计语言,那就是“无所不在、无所不能”。毫无疑问,Python已经成为最受欢迎的程序设计语言之一。在2018年9月的TIOBE排名中,Python语言已经超过了C++语言,跃升到探花的位置了,仅次于状元的Java语言和榜眼的C语言。
作为一款纯粹以自由软件方式推广的程序设计语言,Python 的语法简洁清晰,简单易用。虽然完整地支持面向对象程序设计的方方面面,但是Python并不强制程序设计人员采用面向对象的编程方式,而是可以自由地选择结构化面向过程的编程方式,也可以混合使用面向对象和面向过程的编程方式。虽然我们并不鼓励这么做,但是从这个方面足以说明Python语言的灵活性和柔韧性。再加上Python语言丰富和强大的链接库,涉及面之广令人赞叹,其中包括最新的领域——大数据分析、人工智能、机器学习、证券金融市场的量化交易等,这使它具有招牌式的第三个特性—黏合性。除了Python自由软件团体开发的各种程序和模块外,Python语言还可以把其他语言制作的各种模块轻松地“黏合”在一起,这就是它被称为“胶水语言”的黏性之源。正因为这些特性,所以不但信息产业的专业人员在使用Python语言,而且越来越多的计算机人群开始使用Python语言提高自己运用计算机的能力。行内人士见面的问候语以后也许会变成“你Python了吗?”。
本书的编写风格是教材式的,章节的组织结构与行文的叙述方式就是为了不断激发初学者在学习程序设计语言中的“好奇心”和“成就感”,避免“枯燥乏味”“望而却步”,到“勉为其难”,最终到“避之不及”的窘境。本书从一开始就避免陷于程序设计语言的语法纠结和编程注意事项的琐碎细节中,纵观全书,各个章节都是以范例程序为主线的,让学习者在动手实践中轻松掌握如何使用强大的Python 语言来解决日常的实际问题。作者在每个章节都精心选择了范例程序,每章的最后还安排和设计了上机实践演练范例程序,它们都和今天主流的网络应用息息相关。例如,图形用户界面程序的设计(范例为简易单词翻译器和简易计算器),以面向对象的方式设计的“选课和退课”程序,调用数学和绘图程序包来绘制直方图,编写网络爬虫程序从公开网站上提取股市行情的数据等,让读者直接体验掌握了一手实战必备技能之后油然而生的成就感。
本书既然是以教材的方式编写的,自然适用于大专院校作为教授程序设计课程的教科书。本书的内容有助于学生在学习程序设计语言的同时拓展程序设计实战能力。对于有意转向Python语言的专业人员来说,本书可以作为学习 Python 路途中的“北斗星”。
为了强化大家运用Python程序设计语言的动手编程能力,本书在每一章都规划了多个实用的范例程序及上机实践演练,这些精彩的范例程序包括:
Hello World
零用钱记账小管家
成绩单统计小帮手
密码验证程序不求人
开放数据的提取与应用
输出金字塔图形
简易单词翻译器
乐透投注游戏程序
统计历年英语考试中的高频率单词
用异常处理来控制用户输入的数值
设计“选课和退课”程序
用图形用户界面实现简易计算器
直方图的绘制
编写网络爬虫程序从公开网站上提取股市行情的数据
本书的范例程序可以登录机械工业出版社华章公司网站(www.hzbook.com)下载,先搜索到本书,然后在页面上的“资料下载”模块下载即可。
另外,对于各类开源项目、程序包和模块等,可以从网站https://pypi.org/获取。当然,它的核心网站为https://www.python.org/,其中的内容更加包罗万象。
本书主要由赵军编著,同时参与编写工作的还有王国春、施研然、王然、孙学南等。如果读者在学习过程中遇到无法解决的问题,或者对本书有意见或建议,可以通过邮箱booksaga@126.com与编者联系。
最后祝大家学习顺利,为Python自由软件社区添砖加瓦,同时让Python语言成为自己职业生涯的“开山之斧”。
资深架构师 赵军
2019年1月
目录
前言
第4章 流程控制结构 80
4.1 认识流程控制 81
4.1.1 顺序结构 81
4.1.2 选择结构 81
4.1.3 循环结构 82
4.2 选择流程控制 82
4.2.1 if...else条件语句 82
4.2.2 多重选择 85
4.2.3 嵌套if 87
4.3 循环 88
4.3.1 while循环 89
4.3.2 for循环 90
4.3.3 嵌套循环 92
4.4 continue指令和break指令 94
4.4.1 break指令 94
4.4.2 continue指令 95
4.5 上机实践演练—密码验证程序不求人 96
4.5.1 范例程序说明 96
4.5.2 程序代码说明 96
重点回顾 97
课后习题 98
第5章 字符串的处理 100
5.1 创建字符串 101
5.2 认识转义字符 102
5.3 参数格式化输出 103
5.4 字符串下标与切片 106
5.4.1 通过下标值获取某个字符 106
5.4.2 通过切片读取某段字符串 106
5.4.3 调用split ()方法分割字符串 107
5.5 字符串的常用运算符 109
5.5.1 比较运算符 110
5.5.2 in与not in运算符 110
5.6 字符串的常用函数与方法 110
5.6.1 计算字符串的长度—len()函数 111
5.6.2 与字母大小写有关的方法 111
5.6.3 搜索特定字符串出现的次数—count() 112
5.6.4 删除字符串左右两边特定的字符—strip()、lstrip()、rstrip() 113
5.6.5 字符串替换—replace() 113
5.6.6 查找字符串—find()与index() 114
5.6.7 startswith()方法与endswith()方法 115
5.7 上机实践演练—开放数据的提取与应用 116
5.7.1 什么是开放数据 116
5.7.2 获取开放数据 117
5.7.3 范例程序说明 119
5.7.4 程序代码说明 120
重点回顾 123
课后习题 124
第6章 函数 126
6.1 认识函数 127
6.1.1 定义函数 127
6.1.2 调用函数 128
6.1.3 函数的返回值 130
6.2 Python的参数传递机制 132
6.3 变量的作用域 133
6.4 递归函数 134
6.4.1 递归的定义 134
6.4.2 斐波那契数列 136
6.4.3 汉诺塔问题 137
6.5 认识排序 141
6.5.1 选择排序法 141
6.5.2 冒泡排序法 144
6.5.3 排序函数—sorted() 147
6.6 lambda表达式 148
6.7 上机实践演练—输出金字塔图形 149
6.7.1 范例程序说明 149
6.7.2 程序代码说明 150
重点回顾 153
课后习题 154
第7章 高级数据类型 156
7.1 容器数据类型的比较 157
7.2 列表 157
7.2.1 创建列表 158
7.2.2 列表的常用内建函数 159
7.2.3 常用的列表运算符 161
7.2.4 列表的常用方法 162
7.2.5 用del删除变量与元素 164
7.2.6 二维和多维列表 164
7.3 元组 166
7.3.1 创建元组 167
7.3.2 元组的内建函数 167
7.3.3 元组的运算符 168
7.3.4 解包与交换 169
7.4 字典 170
7.4.1 创建字典 170
7.4.2 字典的基础操作 171
7.4.3 适用于字典的函数 172
7.4.4 适用于字典的运算符 172
7.4.5 适用于字典的处理方法 172
7.5 集合 176
7.5.1 创建集合 176
7.5.2 适用于集合的运算符 176
7.5.3 适用于集合的方法 177
7.6 字典综合范例—简易单词翻译器(图形用户界面) 178
7.6.1 范例程序说明 179
7.6.2 程序代码说明 179
重点回顾 182
课后习题 183
第8章 模块与程序包 185
8.1 导入模块 186
8.1.1 导入整个模块 187
8.1.2 替模块取别名 188
8.1.3 只导入特定的函数 189
8.2 自定义模块 191
认识Python的__name__属性 192
8.3 实用的内建模块与在线帮助 193
8.3.1 os模块 194
8.3.2 sys模块 195
8.3.3 random模块 197
8.3.4 datetime模块 198
8.3.5 查看模块的路径与文件名 201
8.3.6 程序包在线帮助文件 202
8.4 第三方程序包 204
8.4.1 使用pip管理程序安装程序包 205
8.4.2 从PyPI网站安装程序包 206
8.5 上机实践演练—乐透投注游戏程序 207
8.5.1 范例程序说明 207
8.5.2 程序代码说明 208
重点回顾 211
课后习题 212
第9章 文件的存取与处理 214
9.1 认识文件 215
9.1.1 文件的种类 215
9.1.2 认识文件与目录 215
9.1.3 绝对路径与相对路径 216
9.2 文件的读与写 216
9.2.1 文件的写入 217
9.2.2 文件的读取 219
9.3 二进制文件 224
9.4 综合范例程序—统计历年英语考试中的高频率单词 225
重点回顾 226
课后习题 228
第10章 错误与异常处理 229
10.1 程序的错误类型 230
10.1.1 语法错误 230
10.1.2 运行时错误 231
10.1.3 逻辑错误 232
10.2 认识异常 233
10.2.1 异常的类型 233
10.2.2 异常处理的时机 234
10.3 异常处理方式 235
10.3.1 异常处理的语法 235
10.3.2 用raise抛出指定的异常 238
10.4 综合范例程序—用异常处理来控制用户输入的数值 239
重点回顾 240
课后习题 241
第11章 面向对象程序设计 243
11.1 认识面向对象 244
11.1.1 类与对象 244
11.1.2 面向对象的特点 245
11.1.3 面向对象程序设计中的关键术语 246
11.2 Python的类与对象 247
11.2.1 定义类 247
11.2.2 类实例化 247
11.2.3 将对象初始化的__init__()方法 250
11.2.4 匿名对象 251
11.2.5 私有属性与方法 252
11.3 继承 253
11.3.1 单一继承与多重继承 254
11.3.2 覆盖 258
11.3.3 继承相关函数 259
11.3.4 多态 260
11.3.5 合成 261
11.4 上机实践演练—设计“选课和退课”程序 262
重点回顾 263
课后习题 264
第12章 开发图形用户界面的窗口程序 266
12.1 GUI tkinter程序包 267
12.1.1 导入tkinter程序包 267
12.1.2 创建主窗口 267
12.1.3 布局方式 268
12.2 图形用户界面控件 271
12.2.1 标签控件 271
12.2.2 按钮控件 273
12.2.3 文本编辑控件 275
12.2.4 多行文字控件 277
12.2.5 单选按钮控件 278
12.2.6 复选按钮控件 279
12.2.7 滚动条控件 281
12.3 对话框 283
12.3.1 消息框 283
12.3.2 简单型对话框 284
12.3.3 文件对话框 286
12.3.4 调色板选择框 288
12.4 菜单 290
12.5 绘制图形 295
12.5.1 加入位图图像 295
12.5.2 用Canvas控件绘制几何图形 296
12.6 上机实践演练—用图形用户界面实现简易计算器 297
12.6.1 创建主窗口 298
12.6.2 版面布局 298
12.6.3 创建标签、文本编辑与按钮控件 299
12.6.4 加入事件处理函数 301
12.6.5 捕获错误信息 302
重点回顾 304
课后习题 306
第13章 数组与科学计算 308
13.1 NumPy简介 309
13.2 一维数组的应用 309
13.2.1 一维数组的创建 310
13.2.2 ndarray类型的属性 311
13.2.3 一维数组的其他创建方式 311
13.2.4 数组的输出 313
13.2.5 数组的基本操作 314
13.2.6 通用函数 314
13.2.7 数组的下标值与切片运算 316
13.3 二维数组的创建与应用 317
13.3.1 二维数组的创建 318
13.3.2 矩阵相加 319
13.3.3 矩阵相乘 321
13.3.4 转置矩阵 322
13.4 上机实践演练—直方图的绘制 323
重点回顾 325
课后习题 326
第14章 数据提取与网络爬虫 328
14.1 数据提取前的准备工作 329
14.1.1 认识URI与URL 331
14.1.2 用urllib.parse模块解析URL 332
14.2 我的第一个网络爬虫程序 336
14.2.1 网页构成三要素 336
14.2.2 查看网页源代码 337
14.2.3 用urllib.request获取网页内容 341
14.2.4 实用的requests程序包 345
14.3 用Beautiful Soup 4进行网页解析 354
14.3.1 首选Tag 355
14.3.2 BeautifulSoup常用的属性和方法 359
14.3.3 BeautifulSoup程序包的应用范例 365
重点回顾 370
课后习题 371
第15章 课后习题参考答案 374
第1章 课后习题参考答案 374
第2章 课后习题参考答案 376
第3章 课后习题参考答案 377
第4章 课后习题参考答案 379
第5章 课后习题参考答案 380
第6章 课后习题参考答案 382
第7章 课后习题参考答案 384
第8章 课后习题参考答案 386
第9章 课后习题参考答案 387
第10章 课后习题参考答案 388
第11章 课后习题参考答案 389
第12章 课后习题参考答案 390
第13章 课后习题参考答案 391
第14章 课后习题参考答案 392
- 点赞
- 收藏
- 关注作者
评论(0)