Python程序设计(原书第2版)
作者 : [美] 凯·霍斯特曼(Cay Horstmann) 兰斯·尼塞斯(Rance Necaise) 著
译者 : 董付国 译
丛书名 : 计算机科学丛书
出版日期 : 2018-10-24
ISBN : 978-7-111-61147-9
定价 : 119.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 620
开本 : 16
原书名 : Python for Everyone,Second Edition
原出版社: John Wiley & Sons(SIN)
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书介绍Python的基础知识,旨在帮助学生首先掌握概念,之后通过步骤完备的实例培养学生的问题求解能力。这一版采用Python3,并对全书结构进行了优化,既可作为第一门程序设计课的入门教材,也可供Python爱好者自学参考。

图书特色

图书前言

本书主要介绍Python编程要领与高效学习的方法,内容非常广泛,适合作为计算机科学与技术以及其他学科领域学生的第一门程序设计课程教材。阅读本书并不需要读者拥有编程经验,只需要掌握一些高中的代数知识就可以了。为了教学方便,本书采用Python 3,它在很多方面比Python 2更加有规律。
本书主要特色
首先介绍基本语法。
本书采用了传统套路,首先强调程序控制结构、函数、过程分解和内置数据结构,在合适的章节中尽可能早地提到并使用了对象的概念,但是到了第9章才要求学生开始设计和实现自定义类。
适当的引导和可运行示例帮助学生顺利成功。
程序员新手总是会问:“我该怎么开始?现在我该怎么办?”当然,编写程序这样一件复杂的事情无法简化为类似于食谱一样的简单指令。然而,一步一步的引导毫无疑问对于树立信心和给出手头任务的梗概是非常有帮助的。“问题解决”强调设计和计划的重要性,“如何做”引导和帮助学生完成一些常见的编程任务,还有大量“编程实战”演示了如何利用本章学到的概念去解决有趣的问题。
问题解决策略明确。
实用的、按步骤的技术图解可以帮助学生设计和评估编程问题的解决方案,在非常相关和必要的时候介绍这些策略,可以帮助大多数学生扫除通往成功的障碍。这些策略包括:
算法设计(使用伪代码)
首先手工完成(手工完成样例的计算)
流程图
测试用例
手工跟踪
故事板
先解决一个简单些的问题
可复用的函数
逐步提炼
修改算法
通过处理物理对象发现算法
跟踪对象
对象数据的模式
递归思维
估算算法的运行时间
有效的练习使得一切更加完美。
专业学习编程的学生需要有能力实现一些了不起的程序,但他们首先需要相信自己可以成功。本书每节后面有大量的自测题,并通过“练习它”指针来表示。另外,还通过在线方式提供了更多的练习机会,包括自动升级的编程练习和技巧型的多选问题。
通过可视化的方式激发读者并方便导航。
图片以可视化的方式解释了计算机概念的本质和行为,逐步展示的图片可以更好地说明复杂的程序操作。语法框和示例表使用紧凑的格式提供了大量典型和特殊的情况,在关注文字材料之前通过浏览这些视觉资料可以很容易地了解大概情况。
技术上精确的同时关注要领。
像百科全书一样地罗列所有内容对编程新手来说是没有帮助的,同样,仅仅给出一个非常简化的要点列表也是没有帮助的。本书以容易消化和理解的方式给出要领,例如一些可以深入练习达到更好效果的注解,或者当读者已经准备好接收更多信息时给出的语言特性。
本版更新
扩充了图形图像处理知识。
为了加强对语言结构的理解,增加了图形处理的使用。学生在第4章学习设计和使用循环时会开始接触到图像处理,第5章在创建图像处理函数工具包时会再次接触到这些内容。
工具箱模块。
很多可选的“工具箱”介绍了丰富的Python库生态中有用的包。借助这些包,学生可以完成很多实际的任务,例如统计、绘制图表、发送邮件、处理电子表格、分析网页。这些库都是基于计算机科学理论背景的,学生通过这些库可以学习如何应用这些理论来解决实际的问题,每个工具箱搭配了很多章末复习和编程练习。
数据绘图。
一些新的可运行示例演示了如何通过图形绘制来创建数据的可视化表示,这些示例使用pyplot库创建简单的图形表示,演示如何运用相应章节学到的语言知识。
交互学习。
与本书集成的还有更多交互式的学习内容,使学生沉浸于可以促进深度学习的一些活动中。学生不仅可以观看动画和代码跟踪过程,而且可以自己动手来生成这些素材。这些活动可以提供即时反馈来反映学生哪里做得正确和哪里需要继续学习。可以访问http://wiley.
com/go/pfe2interactivities来获取更多资源,以便在你自己的课程中使用。
“CodeCheck”是一个非常有新意的在线服务,学生可以用它来解决一些编程问题,你可以指定已经提前设计好的练习,也可以很容易地添加自己的题目,欢迎访问http://codecheck.it了解更多内容并大胆尝试。
本书概览
图1展示了各章节之间的依赖关系和内容组织方法,本书核心内容有:
  第1章 概述
  第2章 数字与字符串编程
  第3章 选择结构
  第4章 循环
  第5章 函数
  第6章 列表
  第7章 文件与异常
  第8章 集合与字典
然后是与面向对象编程有关的两章:
  第9章 对象和类
  第10章 继承
最后两章是深入学习算法设计与分析的课程:
  第11章 递归
  第12章 排序和搜索

图1 章节依赖关系
图形图像处理。
编写可以绘制图形或者处理图像的程序可以给学生提供复杂主题的有效、直观的认识。第2章介绍了EzGraphics开源库以及如何使用它创建基本的图形。学生会发现这个库比Python的标准库Tkinter更容易使用,并且支持简单的图像处理。图形案例和练习贯穿了整本书,但都属于可选讲的内容。
练习。
每章最后的练习包含了大量复习题和编程问题,有些是来自于图形、科学和商业领域的可选问题。为了吸引学生,这些练习演示了在应用领域中编程的价值。
Web资源。
本书还补充了完整的系列在线资源,可登录www.wiley.com/college/horstmann访问这些在线配套资源,包括:
本书中所有示例程序和例题的源代码。
演讲幻灯片(仅对教师开放)。
所有复习题和编程练习的答案(仅对教师开放)。
侧重技能而不仅仅是术语方面的试题库(仅对教师开放)。这些多选题可用文字处理软件打开查看或者导入到课程管理系统中。
“CodeCheck”任务允许学生致力于创新型在线服务中给出的编程问题,并能够收到即时反馈。教师可以指定系统中已经准备好的练习,也可以很容易地增加自己的题目。
致谢
非常感谢Wiley公司的Byran Gambrel、Don Fowley、Jessy Moor、Jennifer Lartz、Graig Donini和Billy Ray,以及Vickie Piercey在本书出版服务方面做的工作,特别感谢Cindy Johnson的辛苦工作、合理判断和对细节方面让人惊讶的关注。
感谢下列人员在准备和检查本书补充材料方面的辛勤工作:
Jim Carrier, Guilford Technical Community College
Akshaye Dhawan, Ursinus College
Byron Hoy, Stockton University
Maria Laurent-Rice, Orange Coast College
John McManus, Randolph-Macon College
Ben Stephenson, University of Calgary
Amanda Stouder, Rose-Hulman Institute of Technology
Dean Zeller, University of Northern Colorado
感谢提供反馈、检查手稿、给出有价值建议并且指出错误和遗漏的朋友,他们是:
Claude Anderson, Rose Hulman Institute of Technology
Gokcen Cilingir, Washington State University
Lee D. Cornell, Minnesota State University, Mankato
Dirk Grunwald, University of Colorado Boulder
Andrew Harrington, Loyola University Chicago
Debbie Keen, University of Kentucky
Nicholas A. Kraft, University of Alabama
Aaron Langille, Laurentian University
Shyamal Mitra, University of Texas Austin
Chandan R. Rupakheti, Rose-Hulman Institute of Technology
John Schneider, Washington State University
Amit Singhal, University of Rochester
Ben Stephenson, University of Calgary
Amanda Stouder, Rose-Hulman Institute of Technology
Dave Sullivan, Boston University
Jay Summet, Georgia Institute of Technology
James Tam, University of Calgary
Krishnaprasad Thirunarayan, Wright State University
Leon Tietz, Minnesota State University, Mankato
Peter Tucker, Whitworth University
Frances VanScoy, West Virginia University

上架指导

计算机\程序设计

封底文字

本书由经典畅销书籍《Java核心技术》的作者Cay Horstmann撰写,非常适合Python初学者和爱好者阅读,不仅能够帮助新手快速入门,掌握基础知识,更有益于培养解决实际问题的思维和能力。
本书特点
首先介绍基本语法,较早提出对象的概念,但在掌握一定基础后才开始设计自定义类。
将解决方案分解为详尽的步骤,循序渐进地引导读者利用学到的概念解决有趣的问题。
从算法设计到流程图、测试用例、逐步提炼、修改算法等,提供明确的问题解决策略。
每章都包含大量的自测题、复习题和编程练习题,有效帮助读者巩固知识并提升能力。
扩充了图形和图像处理方面的知识,还增加了一些新的案例来演示数据的可视化表示。
“工具箱”模块介绍了Python库中很多有用的包,可用于解决章末的跨学科编程练习。
配有丰富的教辅资源,源代码可免费下载,方便读者结合书中内容更好地学习和进阶。

作者简介
凯·霍斯特曼(Cay Horstmann) 圣何塞州立大学计算机科学系教授,Java的倡导者,经常在开发人员会议上发表演讲。他是《Java核心技术》的作者,同时也关注Python、Scala、C++等语言,为专业程序员和计算机科学专业学生编写过数十本图书。
兰斯·尼塞斯(Rance Necaise) 兰道尔夫-麦肯学院计算机科学系副教授,撰写了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技术书籍。

作者简介

[美] 凯·霍斯特曼(Cay Horstmann) 兰斯·尼塞斯(Rance Necaise) 著:凯·霍斯特曼(Cay Horstmann) 圣何塞州立大学计算机科学系教授,Java的倡导者,经常在开发人员会议上发表演讲。他是《Java核心技术》的作者,同时也关注Python、Scala、C++等语言,为专业程序员和计算机科学专业学生编写过数十本图书。
兰斯·尼塞斯(Rance Necaise) 兰道尔夫-麦肯学院计算机科学系副教授,撰写了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技术书籍。

译者序

Python是一门免费、开源、跨平台的高级动态编程语言,支持命令式编程、函数式编程,完全支持面向对象程序设计,拥有大量功能强大的内置对象、标准库,以及适用于各行业的扩展库,使得各领域的工程师、科研人员、策划人员和管理人员能够快速实现和验证自己的思路、创意或者推测,还有很多人喜欢用Python写个小脚本来完成自己工作中的一些小任务,提高工作效率。在有些编程语言中需要编写大量代码才能实现的功能,在Python中只需要几行代码,这大幅度减少了代码量,使代码更加容易维护。Python用户只需要把主要精力放在业务逻辑的设计与实现上,在开发速度和运行效率之间达到了完美的平衡,其精妙之处令人击节赞叹。
经过二十多年的发展,Python已经渗透到统计分析、移动终端开发、科学计算可视化、系统安全、逆向工程、软件测试与软件分析、图形图像处理、人工智能、机器学习、深度学习、游戏设计与策划、网站开发、数据爬取与大数据处理、密码学、系统运维、音乐编程、影视特效制作、计算机辅助教育、医药辅助设计、天文信息处理、化学、生物信息处理、神经科学与心理学、自然语言处理、电子电路设计、电子取证、树莓派等几乎所有专业和领域,在黑客领域更是多年来一直拥有霸主地位。与此同时,Python语言在各大编程语言排行榜上的位次也逐年上升,被TIOBE网站评为2010年年度语言,在IEEE Spectrum 2017编程语言排行榜上更是名列榜首。
本书介绍了数字、字符串、列表、字典、集合等Python内置对象以及选择结构、循环结构、函数设计、面向对象编程、文件操作等基础知识。书中并没有教条式地介绍Python语法和内置函数以及内置对象方法的用法,而是通过大量实际案例来演示这些技术和应用,更加易于理解和接受。另外,本书非常重视计算思维的培养和训练,在介绍案例时,由浅入深一步一步把解决问题的完整思路展现在读者面前。读者通过学习案例的解决思路很容易举一反三解决其他同类问题,可见作者用心良苦,既授之以鱼,又授之以渔。
本书虽然面向Python初学者,但是基础内容、扩展内容、课后复习题与编程练习题跨越多个学科领域,并且提供了丰富的配套资源,是一本难得的Python教材,对开发人员也具有一定的参考价值。
由于时间仓促,译者水平有限,难免出现错误,欢迎同行和热心读者指出!

译者
2018.7

图书目录

出版者的话
译者序
前言
第1章 概述 1
1.1 计算机程序 1
1.2 深入剖析计算机 2
1.3 Python编程语言 4
1.4 熟悉编程环境 5
1.5 分析第一个程序 9
1.6 错误 11
1.7 问题解决:算法设计 13
本章小结 18
复习题 19
编程练习 20
第2章 数字与字符串编程 23
2.1 变量 23
2.1.1 定义变量 23
2.1.2 数字类型 25
2.1.3 变量名 26
2.1.4 常量 27
2.1.5 注释 27
2.2 算术运算 29
2.2.1 基本算术运算 29
2.2.2 幂运算 30
2.2.3 整除和余数 30
2.2.4 调用函数 31
2.2.5 数学函数 33
2.3 问题解决:首先手工完成 36
2.4 字符串 39
2.4.1 字符串类型 39
2.4.2 连接与重复 40
2.4.3 转换数字和字符串 41
2.4.4 字符串与字符 41
2.4.5 字符串方法 42
2.5 输入输出 45
2.5.1 用户输入 45
2.5.2 输入数字 46
2.5.3 格式化输出 47
2.6 图形:简单绘图 56
2.6.1 创建窗口 56
2.6.2 线和多边形 57
2.6.3 内部填充的形状与颜色 58
2.6.4 椭圆、圆和文本 60
本章小结 66
复习题 67
编程练习 69
第3章 选择结构 78
3.1 if语句 78
3.2 关系运算符 82
3.3 嵌套的分支 90
3.4 多重选择 94
3.5 问题解决:流程图 99
3.6 问题解决:测试用例 102
3.7 布尔变量和运算符 104
3.8 分析字符串 109
3.9 应用:输入验证 112
本章小结 125
复习题 126
编程练习 131
第4章 循环 142
4.1 while循环 142
4.2 问题解决:手工跟踪 148
4.3 应用:处理警戒值 151
4.4 问题解决:故事板 155
4.5 常见循环算法 158
4.5.1 数值求和与平均 158
4.5.2 匹配计数 158
4.5.3 遇到匹配项之前一直提示 159
4.5.4 最大值与最小值 159
4.5.5 比较相邻值 159
4.6 for循环 161
4.7 嵌套循环 168
4.8 处理字符串 175
4.8.1 统计匹配项 175
4.8.2 查找所有匹配 176
4.8.3 查找第一个或最后一个匹配项 176
4.8.4 验证字符串 176
4.8.5 构建新字符串 177
4.9 应用:随机数和模拟 179
4.9.1 生成随机数 179
4.9.2 模拟掷骰子 180
4.9.3 蒙特卡罗方法 180
4.10 图形:数字图像处理 184
4.10.1 图像过滤 184
4.10.2 重构图像 187
4.11 问题解决:先解决一个简单些的问题 188
本章小结 194
复习题 195
编程练习 199
第5章 函数 212
5.1 函数如同黑盒子 212
5.2 实现和测试函数 213
5.2.1 实现函数 213
5.2.2 测试函数 214
5.2.3 包含函数的程序 215
5.3 参数传递 217
5.4 返回值 219
5.5 没有返回值的函数 228
5.6 问题解决:可复用的函数 229
5.7 问题解决:逐步提炼 233
5.8 变量作用域 246
5.9 图形:实现图像处理工具包 252
5.9.1 准备开始 252
5.9.2 比较图像 253
5.9.3 调整图像亮度 253
5.9.4 旋转图像 255
5.9.5 使用工具包 256
5.10 递归函数(可选) 260
本章小结 264
复习题 265
编程练习 267
第6章 列表 276
6.1 列表基本属性 276
6.1.1 创建列表 276
6.1.2 访问列表元素 277
6.1.3 遍历列表 278
6.1.4 列表引用 279
6.2 列表操作 282
6.2.1 追加元素 282
6.2.2 插入元素 282
6.2.3 查找元素 283
6.2.4 删除元素 284
6.2.5 连接与重复 285
6.2.6 相等性测试 285
6.2.7 求和、最大值、最小值和排序 285
6.2.8 复制列表 285
6.3 常用列表算法 288
6.3.1 填充 288
6.3.2 合并列表元素 288
6.3.3 元素分隔符 289
6.3.4 最大值和最小值 289
6.3.5 线性搜索 290
6.3.6 收集和统计匹配项 290
6.3.7 删除匹配项 291
6.3.8 交换元素 291
6.3.9 读取输入 292
6.4 在函数中使用列表 297
6.5 问题解决:修改算法 304
6.6 问题解决:通过处理物理对象发现算法 310
6.7 表格 314
6.7.1 创建表格 314
6.7.2 访问元素 315
6.7.3 定位邻居元素 315
6.7.4 计算行和列的总和 316
6.7.5 在函数中使用表格 316
本章小结 324
复习题 325
编程练习 328
第7章 文件与异常 337
7.1 读取和写入文本文件 337
7.1.1 打开文件 337
7.1.2 读取文件 338
7.1.3 写入文件 339
7.1.4 文件处理案例 339
7.2 文本输入和输出 341
7.2.1 迭代文件中的行 341
7.2.2 读取单词 342
7.2.3 读取字符 344
7.2.4 读取记录 345
7.3 命令行参数 353
7.4 二进制文件与随机访问(可选) 365
7.4.1 读写二进制文件 365
7.4.2 随机访问 366
7.4.3 图像文件 366
7.4.4 处理BMP文件 367
7.5 异常处理 373
7.5.1 抛出异常 374
7.5.2 处理异常 375
7.5.3 finally子句 376
7.6 应用:处理输入错误 380
本章小结 391
复习题 392
编程练习 393
第8章 集合与字典 404
8.1 集合 404
8.1.1 创建和使用集合 404
8.1.2 增加和删除元素 405
8.1.3 子集 406
8.1.4 并集、交集和差集 407
8.2 字典 414
8.2.1 创建字典 414
8.2.2 访问字典的值 415
8.2.3 增加和修改项 415
8.2.4 删除项 416
8.2.5 遍历字典 416
8.3 复杂结构 422
8.3.1 包含集合的字典 423
8.3.2 包含列表的字典 425
本章小结 434
复习题 435
编程练习 436
第9章 对象和类 440
9.1 面向对象编程 440
9.2 实现一个简单的类 441
9.3 指定类的公开接口 445
9.4 设计数据表示 446
9.5 构造函数 448
9.6 实现方法 451
9.7 测试一个类 454
9.8 问题解决:跟踪对象 462
9.9 问题解决:对象数据的模式 465
9.9.1 记录总数 465
9.9.2 事件计数 465
9.9.3 收集值 466
9.9.4 管理对象的属性 466
9.9.5 使用唯一状态建模对象 467
9.9.6 描述对象的位置 467
9.10 对象引用 469
9.10.1 共享引用 470
9.10.2 None引用 471
9.10.3 self引用 472
9.10.4 对象的生命周期 472
9.11 应用:编写一个Fraction类 473
9.11.1 Fraction类的设计 473
9.11.2 构造函数 474
9.11.3 特殊方法 475
9.11.4 算术运算 477
9.11.5 逻辑运算 478
本章小结 485
复习题 486
编程练习 487
第10章 继承 495
10.1 继承层次结构 495
10.2 实现子类 499
10.3 调用超类构造函数 502
10.4 覆盖方法 506
10.5 多态 509
10.6 应用:几何形状类层次结构 523
10.6.1 基类 523
10.6.2 基本形状 525
10.6.3 形状分组 528
本章小结 530
复习题 531
编程练习 532
第11章 递归 537
11.1 再看三角数 537
11.2 问题解决:递归思维 541
11.3 递归辅助函数 545
11.4 递归的效率 546
11.5 排列 551
11.6 回溯 555
11.7 互递归 561
本章小结 568
复习题 569
编程练习 569
第12章 排序和搜索 575
12.1 选择排序 575
12.2 分析选择排序算法 577
12.3 分析选择排序算法的性能 579
12.4 归并排序 583
12.5 分析归并排序算法 585
12.6 搜索 589
12.6.1 线性搜索 589
12.6.2 二分搜索 590
12.7 问题解决:估计算法的运行时间 592
12.7.1 线性时间 592
12.7.2 二次时间 593
12.7.3 三角模式 594
12.7.4 对数时间 595
本章小结 602
复习题 603
编程练习 605

教学资源推荐
作者: (美)Barry Wilkinson, Michael Allen
作者: [美] 卢博米尔·佩尔科维奇(Ljubomir Perkovic) 著
作者: (美)Y.Daniel Liang 著 阿姆斯特朗亚特兰大州立大学
作者: Richard C. Detmer
参考读物推荐
作者: 葛红儒 著
作者: 董霙 黄悦 李硙 祁特 黄珊 刘娅琦 著
作者: 周英 卓金武 卞月青 著