新書推薦:
《
王阳明大传:知行合一的心学智慧(精装典藏版)
》
售價:NT$
1010.0
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:NT$
602.0
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:NT$
352.0
《
南方谈话:邓小平在1992
》
售價:NT$
367.0
《
纷纭万端 : 近代中国的思想与社会
》
售價:NT$
500.0
《
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
》
售價:NT$
765.0
《
朋党之争与北宋政治·大学问
》
售價:NT$
454.0
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:NT$
403.0
|
編輯推薦: |
本书采用基于案例的学习方法讲解Python程序设计和计算机科学基础知识,而非采用传统的基于Python语法或语言元素的篇章结构。书中每一章都围绕一个应用场景,涉及密码学、图像处理、天文学和生物信息学等领域,通过编程实践帮助读者快速掌握算法开发和问题求解技能。
本书特色
全面更新至Python 3.8,添加了大量新内容和新特性,并配有可免费下载的源代码。
在应用场景中螺旋式引入解决问题所必需的语法知识和编程方法,不断巩固和拓展所学知识。
强调动手实践,包含大量不同难度和不同复杂度的编程练习题,便于读者自主学习及进阶。
|
內容簡介: |
本书采用基于案例的学习方法,在不同应用场景下以问题求解为引导讲授Python程序设计,涵盖密码学、图像处理、天文学和生物信息学等领域。第3版更新至Python 3.8,更加强调动手实践,每一章都围绕一个实战项目展开讨论,并包含大量的编程练习题。全书在应用场景中螺旋式引入解决问题所必需的Python语法知识和编程方法,从而通过不断巩固和拓展所学知识,进一步培养读者的问题求解能力。本书适合作为高等院校计算机相关专业学生第yi门程序设计课程的教材或参考书,也可作为Python初学者的入门读物。
|
關於作者: |
---作者简介---
布兰德利·N. 米勒(Bradley N. Miller) 路德学院荣休教授,Runestone Interactive的创始人。
大卫·L.拉农(David L. Ranum) 路德学院教授,致力于软件设计和操作系统方面的科研及教学工作。
朱莉·安德森(Julie Anderson) 退休前任教于罗林斯学院。她参与撰写了一系列关于Java和Python语言的大学教材,并曾在计算机书刊出版机构担任撰稿人、编辑和专栏作家。
---译者简介---
江红 华东师范大学副教授,博士。1994年毕业于复旦大学计算机系。曾获得上海市教学成果一等奖、华东师范大学教学成果一等奖、华东师范大学优秀任课教师奖等荣誉。
余青松 华东师范大学高级工程师。1990年毕业于华东师范大学并留校任教。编著计算机相关教材30余本,在国内外学术期刊和学术会议上发表科技论文近百篇。
|
目錄:
|
出版者的话
译者序
前言
第1章 Python导论 1
1.1 本章目标 1
1.2 什么是计算机科学 1
1.3 为什么要学习计算机科学 2
1.3.1 计算机科学的日常应用 2
1.3.2 计算机科学的重要性 3
1.4 问题求解的策略 3
1.5 Python概述 5
1.5.1 基本元素 6
1.5.2 命名对象 10
1.5.3 抽象 15
1.5.4 循环 22
1.6 本章小结 28
关键术语 28
Python关键字 29
编程练习题 29
第2章 πthon:估算圆周率的值 30
2.1 本章目标 30
2.2 圆周率是什么 30
2.3 有关math模块的进一步讨论 31
2.4 阿基米德方法 32
2.4.1 Python实现 33
2.4.2 开发一个计算圆周率pi的函数 34
2.5 累加器估算法 36
2.5.1 累加器模式 36
2.5.2 项的总和:莱布尼茨公式 37
2.5.3 项的乘积:沃利斯公式 39
2.6 蒙特卡罗模拟 41
2.6.1 布尔表达式 43
2.6.2 复合布尔表达式和逻辑运算符 44
2.6.3 选择语句 45
2.6.4 实现模拟 48
2.6.5 使用图形可视化结果 50
2.7 本章小结 53
关键术语 53
Python关键字、模块和命令 53
编程练习题 54
第3章 密码以及其他奥秘 55
3.1 本章目标 55
3.2 字符串数据类型 55
3.2.1 拼接 56
3.2.2 重复 56
3.2.3 索引 57
3.2.4 字符串切片 58
3.2.5 字符串搜索 59
3.2.6 字符串方法 60
3.2.7 字符函数 62
3.3 编码消息和解码消息 64
3.4 置换加密算法 64
3.4.1 使用置换进行加密 64
3.4.2 解密置换后的消息 66
3.4.3 读取用户输入 68
3.5 替换加密算法 69
3.6 创建密钥 71
3.7 维吉尼亚加密算法 76
3.8 本章小结 80
关键术语 81
Python关键字、函数和常量 81
编程练习题 82
第4章 Python集合导论 83
4.1 本章目标 83
4.2 什么是数据 83
4.3 存储用于处理的数据 83
4.3.1 再论字符串 83
4.3.2 列表 85
4.4 计算数据的统计量 90
4.4.1 简单离散度度量 90
4.5 中心趋势度量 92
4.5.1 均值 92
4.5.2 中值 93
4.5.3 众数 95
4.6 频率分布 100
4.6.1 使用字典计算频率分布表 100
4.6.2 不使用字典计算频率分布表 101
4.6.3 可视化频率分布 103
4.7 离散度:标准差 105
4.8 本章小结 107
关键术语 107
Python关键字、函数和方法 107
编程练习题 108
第5章 大数据:文件输入和输出 109
5.1 本章目标 109
5.2 使用文件处理大数据集 109
5.2.1 文本文件 109
5.2.2 迭代文件中的文本行 111
5.2.3 写入文件 112
5.2.4 字符串格式化 113
5.2.5 其他文件读取方法 115
5.3 从互联网上读取数据 117
5.3.1 使用CSV文件 117
5.3.2 使用while循环处理数据 118
5.3.3 列表解析 121
5.3.4 从互联网上读取JSON数据 125
5.4 数据相关性 128
5.5 本章小结 129
关键术语 129
Python关键字和函数 130
编程练习题 130
第6章 图像处理 131
6.1 本章目标 131
6.2 什么是数字图像处理 131
6.2.1 RGB颜色模型 131
6.2.2 cImage模块 132
6.3 基本图像处理 136
6.3.1 图像负片 136
6.3.2 灰度图像 138
6.3.3 一个通用的解决方案:像素映射器 140
6.4 参数、参数传递和作用范围 143
6.4.1 通过赋值调用的参数传递 144
6.4.2 名称空间 145
6.4.3 调用函数和查找名称 148
6.4.4 模块和名称空间 150
6.5 高级图像处理 151
6.5.1 图像缩放 151
6.5.2 图像拉伸:另一种视角 153
6.5.3 翻转图像 156
6.5.4 边缘检测 158
6.6 本章小结 162
关键术语 163
Python关键字、函数和变量 163
编程练习题 163
第7章 数据挖掘:聚类分析 164
7.1 本章目标 164
7.2 什么是数据挖掘 164
7.3 聚类分析:一个简单的示例 164
7.4 在简单数据集上实现聚类分析 165
7.4.1 两点之间的距离 165
7.4.2 聚类和中心点 167
7.4.3 K-均值聚类分析算法 167
7.4.4 K-均值算法的实现 168
7.4.5 K-均值算法的实现(续) 172
7.5 实现聚类分析:地震数据 176
7.5.1 文件处理 176
7.5.2 可视化 178
7.6 聚类分析的缺陷及解决方法 179
7.7 本章小结 180
关键术语 180
Python关键字 181
编程练习题 181
第8章 密码分析学 182
8.1 本章目标 182
8.2 概述 182
8.3 破解围栏加密算法 182
8.3.1 使用字典检查结果 183
8.3.2 暴力破解法 184
8.3.3 一种围栏解密算法 186
8.4 破解替换加密算法
|
內容試閱:
|
概述
计算机科学面向需要求解问题的科技工作者,算法则有助于找到这些问题的解决方案。想要成为一名计算机科学家,首先意味着我们必须致力于解决问题,能够从零开始或者通过应用以往的经验模式来构造算法。
精通计算机科学的途径是通过深思熟虑以及循序渐进的方式感受和体验这门学科的基本思想。计算机科学的初学者在继续深入学习更高级和更复杂的课程之前,需要通过反复的编程实践来透彻理解基本概念。此外,初学者还需要通向成功和获得自信的机会。当学生学习计算机科学入门知识时,我们希望他们专注于问题求解、算法开发以及算法理解等方面。
在本书中,我们使用Python作为程序设计语言,因为Python具有清晰和简洁的语法,以及直观的用户环境。Python语言的基本集合库功能非常强大,而且易于使用。Python语言的交互特性提供了一个便利的环境,使得用户不需要大量的编码就可以方便地测试问题求解的各种构想。后,Python提供了一种类似于教科书的表示法来描述算法,从而减轻需要使用伪代码描述算法的额外负担。因此,Python语言非常有利于描述如何利用算法来解决许多现代的、有趣的问题。
主要特点
本书可作为计算机科学门课程的教材或参考书。本书侧重于解决问题,并根据需要引入相应的语言特性来解决面临的问题。我们没有采用传统的语言元素结构,而是围绕着学生普遍感兴趣的问题来组织教材的内容。因此,在本书中,读者不会看到类似于“循环
结构”和“选择结构”等章节标题,而是会看到“天体”和“密码以及其他奥秘”等章节标题。
贯穿全书,所有的概念都是使用螺旋式模型引入的。由于Python的语法易于学习,我们可以快速介绍标准程序设计结构的基础知识。随着学生深入学习本书的内容,更多有关程序设计结构的细节内容和背景知识将被逐渐添加到工具箱中。这样,学生就可以在解决问题的同时接触到重要的计算机科学相关概念。
例如,在呈现有关函数的概念时,我们演示了如何采用这种螺旋式方法以不同方式涉及同一个特定的主题。学生在第1章中就开始学习编写带参数的函数。接着,在第2章中介绍带返回值的函数。在第6章中,学生会学习如何将函数作为参数传递给其他函数,以及有关Python作用范围规则的详细信息。在第8章中,学生将学习Python的关键字参数和可选参数。第9章将介绍递归函数。在第10章中,学生将学习如何编写作为类方法的函数。在第12章中,学生将学习如何编写抽象方法。
第3版新增内容
第3版包含Python 3.8中的许多更新内容和新特性。在保留面向问题求解方法的同时,我们还在第3版中添加了许多教学辅助工具,以更好地说明和突出Python的程序设计结构。
例如,每一个新引入的函数或者方法都以表格的形式进行总结。
input函数
函数 说明
input(prompt) 显示提示信息,然后在用户按enter或者return键确认时返回用户键入的任何字符所组成的字符串。返回的字符串中不包括enter或者return键
此外,第3版还包括以下新内容:
使用“摘要总结”框来总结前文的重要知识点。
摘要总结 列表是不同对象的有序集合。列表的表示方式是包括在方括号中的以逗号分隔的值。
使用“注意事项”框来提醒学生注意可能的陷阱,并提供避免错误的技巧。
注意事项 一定要记住在循环体中更新while循环条件,以避免无限死循环。
使用“编程实践”框来提供求解问题的策略,以及编写可读性强、易于维护的代码的技巧。
编程实践 使用自顶向下的设计将一个大问题分解成更小的、可管理的任务。这个过程也被称为逐步求精。
使用如下格式的Python代码,以便学生更好地看清楚其中的语法元素。
作为对教师和学生反馈的回应,我们增加了附录D,其中提供了各章中部分“动手实践”的答案。
在第5章中,我们更新了访问在线数据的方法。新的示例处理目前流行的在线数据格式CSV和JSON。
同样,从第5章开始更新了字符串格式—目前我们使用字符串的format方法。
在第10章以及后续章节中,创建类时我们使用双下划线(_?_)前缀来定义实例变量名以实现封装。
变量名和函数名遵循标准的驼峰式命名规范。
如何使用本书
章节组织结构
本书分为三个部分。第1~5章介绍所有的关键控制结构和Python数据类型,强调简单的命令式程序设计结构,例如变量、循环结构和选择结构。前5章的内容涵盖所有主要的Python数据类型,包括整数、浮点数、字符串、列表、字典、元组和文件。
在第1章中,我们通过应用示例的方式引入对象的概念。从某种意义上说,Python程序设计方法中的一切皆是对象。从通用的程序设计概念和Python提供的模块开始,能使我们在不引入额外复杂性的情况下解决更有趣的问题。例如,我们在第1章中使用turtle(海龟)图形模块来介绍简单的图形。在第6章中,我们通过使用一个简单的图像对象来介绍图像处理,该图像对象自动从文件中加载图像,但允许学生获取和设置像素值。
接下来的章节将展开阐述第1~5章中介绍的概念。第6~9章在引入其他问题求解模式的同时,为学生提供了进一步熟悉基本的程序设计概念的机会。学生还将进一步了解Python的内部机制。
第10~13章强调面向对象的程序设计,并介绍设计和构建类所需的概念。在引入这些主题时,学生应该已经熟悉对象的思想,因此,构建自定义的对象自然而然成为下一步的目标。这部分的个示例强调多个真实对象之间交互的重要性。在实现了简单的类之后,我们通过创建一个图形库以及将电子游戏作为turtle模块的扩展来自然而然地引入继承的概念。
教学建议
本书的讲授可以采用若干不同的方法,图P-1提供了一些讲授方法。种方法是按照章节顺序进行讲授。教师可以在一个学期内讲完整本书的内容,也可以在两个学期内讲完,因为本书提供了足够多的探索性材料以满足整个学年的授课要求。第二种方法是先讲授第1~5章,然后跳转到第10~13章。这种方法在命令式程序设计和面向对象程序设计之间提供了一种平衡,这种平衡非常适用于一个学期的教学计划。如果还有额外的时间,则可以选择第6~9章中的部分内容进行教学,然后再继续讲授第10~13章。另一个建议是在入门课程中讲授第1~9章,该课程只涉及命令式程序设计和对象的使用。
图P-1 本书的阅读和讲授路线图
如何使用练习题
本书包括三种练习题。种练习题是“动手实践”中的一些习题,要求学生尝试运行作为章节内容的代码。通过这些练习,学生可以通过代码来学习或者自主探索。第二种练习题是“动手实践”中的另外一些习题,要求学生修改或者扩展章节内容中提供的代码。书中常常会先提供一个简单的代码版本,要求学生修改简单代码以改进或者添加其他功能。第三种练习题是每章末尾的编程练习题,要求学生根据描述实现完整的编程项目,这些项目与对应章节所涵盖的内容相关,但不涉及扩展或者修改已提供的代码。
贯穿全书,我们在每一节中都包含了练习题。这些练习题以不同的方式组织,读者可以采用以下多种方式加以使用:
如果是自学本书,则“动手实践”练习题是很好的突破点,读者可以随时停下阅读,动手实践所学的知识。
教师可能会发现,许多练习题包含课堂上要涵盖的授课内容,这些内容可作为学生在课堂上的阅读材料的补充。
在传统的课堂教学中,教师可以将练习题布置为家庭作业。读者应该感到幸运的是,在计算机科学入门课程中就开始涉及诸多小型编程任务。通常学生在一个学期内能够完成30多个小型编程任务。
也可以把本书作为计算机科学“动手实践”导论课程的一部分。教师可以先花少量的时间讲授和强化章节要点,但大部分的课堂时间应该让学生去完成作为补充阅读的练习题。这种教学方式顺应了计算机科学教育主动学习的发展趋势,同时也深受学生的欢迎。
各章的关键主题
表P-1列出了每一章中重点介绍的问题,以及该章中引入的计算机科学关键概念。
表P-1 问题和关键概念
章 关键问题 计算机科学概念
第1章 绘制多边形和近似圆形,通用问题求解策略 数值数据类型、赋值语句、使用turtle对象、简单的for循环结构、简单的函数
第2章 估算圆周率的各种方法 累加器模式、简单选择语句、布尔表达式、具有返回值的函数、math(数学)模块、random(随机)模块
第3章 密码算法, 包括置换加密算法、替换加密算法 字符串数据类型和方法、模运算、用户输入、字符串的选择和迭代
第4章 计算简单统计量 Python列表、元组和字典数据类型
第5章 使用大数据集计算统计量 文件输入和输出、while循环、字符串格式、读取CSV和JSON格式的在线数据
第6章 数字图像处理、像素处理、图像的放大和缩小、边缘检测算法 嵌套循环、把函数作为参数传递、作用范围规则
第7章 大数据集的聚类分析与可视化 Python列表和字典数据类型、文件读取和while循环的进一步阐述
第8章 破解置换加密算法和替换加密算法的方法、频率分析 在列表和字典中存储有意义的数据、字符串处理、正则表达式模块
第9章 分形图形的概念,如何使用分形图形来模拟树木、灌木、雪花和其他自然界的物体 递归、语法和生长规则
第10章 计算和绘制大型天体之间的相互作用 面向对象的设计、类的构造、实例变量和方法
第11章 模拟捕食者和猎物之间的关系 在模拟中使用对象,许多具有简单行为的对象可能导致有趣的复杂结果
第12章 设计具有点、线、多边形和其他形状的面向对象的图形库 继承和多态性,使用turtle模块实现更高层次的图形库
第13章 设计和实现一个简单的电子游戏 事件驱动的程序设计、继承、静态变量和静态方法
补充资料
本书提供可供教师下载的补充资料,包括各章节的练习题答案、试题库和PPT。各章列出的源代码也提供给学生和教师。想要获取更多相关信息,请访问网址go.jblearning.com/python3e。
作者联系方式
如果读者有任何疑问,或者发现本书中存在技术错误,请通过JulieAustinAnderson@gmail.com联系Julie Anderson。我们将在本书的官方网站上发布更正信息。
致谢
感谢所有的合作伙伴、同事和家人对本书的贡献。
首先感谢出版商Jones & Bartlett Lear
|
|