作者 |
布兰德利·N. 米勒 大卫·L. 拉农 朱莉·安德森 肯尼斯·A. 兰伯特 |
丛书名 |
计算机科学丛书 |
出版社 |
机械工业出版社 |
ISBN |
9782107021535 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8082088 - Python程序设计教程:基于案例的学习方法(原书第3版)--------------------------- 本书采用基于案例的学习方法,在不同应用场景下以问题求解为引导讲授Python程序设计,涵盖密码学、图像处理、天文学和生物信息学等领域。第3版更新至Python 3.8,更加强调动手实践,每一章都围绕一个实战项目展开讨论,并包含大量的编程练习题。全书在应用场景中螺旋式引入解决问题所必需的Python语法知识和编程方法,从而通过不断巩固和拓展所学知识,进一步培养读者的问题求解能力。本书适合作为高等院校计算机相关专业学生第yi门程序设计课程的教材或参考书,也可作为Python初学者的入门读物。 ---------------------------8060080 - Python程序设计与问题求解(原书第2版)--------------------------- 本书是为计算机科学专业第一门程序设计课程编写的教材,选用流行且易于教学的Python语言,主要涵盖五个方面的内容:编程基础,包括数据类型、控制结构、算法设计等;面向对象编程,包括基础原则和应用方法;数据和信息处理,包括字符串、数组、文件、列表等;软件开发生命周期,包括大量案例研究;编程实践,包括数字和文本处理、事件驱动编程、图形图像处理、网络通信等。书中的每个新概念只在解决问题时才被引入,重视培养良好的编程习惯,适合所有程序设计初学者阅读。 |
目录 |
[套装书具体书目] 8060080 - Python程序设计与问题求解(原书第2版) - 9787111626138 - 机械工业出版社 - 定价 99 8082088 - Python程序设计教程:基于案例的学习方法(原书第3版) - 9787111685166 - 机械工业出版社 - 定价 99 ---------------------------8082088 - Python程序设计教程:基于案例的学习方法(原书第3版)--------------------------- 出版者的话 译者序 前言 第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 破解替换加密算法 187 8.4.1 字母频率 187 8.4.2 密文频率分析 192 8.4.3 字母对分析 193 8.4.4 单词频率分析 199 8.4.5 偏词模式匹配 202 8.4.6 正则表达式总结 208 8.5 本章小结 209 关键术语 210 Python函数、方法和关键字 210 编程练习题 210 第9章 分形图形:自然界的几何学 211 9.1 本章目标 211 9.2 概述 211 9.3 递归程序 212 9.3.1 递归正方形 212 9.3.2 经典递归函数 214 9.3.3 绘制递归树 214 9.3.4 谢尔宾斯基三角形 216 9.3.5 谢尔宾斯基三角形的调用树 218 9.4 雪花、林登麦伊尔系统及其语法 219 9.4.1 L-系统 220 9.4.2 自动扩展生长规则 222 9.4.3 更先进的L-系统 223 9.5 本章小结 226 关键术语 226 编程练习题 226 第10章 天体 227 10.1 本章目标 227 10.2 概述 227 10.2.1 程序设计 227 10.2.2 面向对象的程序设计 228 10.2.3 Python类 228 10.3 设计和实现Planet类 229 10.3.1 构造方法 229 10.3.2 访问器方法 231 10.3.3 更改器方法 234 10.3.4 特殊方法 235 10.3.5 方法和self 238 10.3.6 方法存储和查找的细节 239 10.4 设计和实现Sun类 240 10.5 设计和实现太阳系 241 10.6 制作太阳系的动画 243 10.6.1 使用Turtle对象 243 10.6.2 行星轨道 247 10.6.3 实现 249 10.7 本章小结 252 关键术语 253 Python关键字和函数 253 编程练习题 253 第11章 模拟 254 11.1 本章目标 254 11.2 熊和鱼 254 11.3 什么是模拟 254 11.4 游戏规则 255 11.5 设计模拟 255 11.6 实现模拟 257 11.6.1 World类 257 11.6.2 Fish类 261 11.6.3 Bear类 265 11.6.4 主模拟函数 267 11.7 植物繁殖 269 11.8 继承机制 271 11.9 本章小结 271 关键术语 271 Python关键字和函数 271 编程练习题 271 第12章 继承 273 12.1 本章目标 273 12.2 概述 273 12.3 基本设计 274 12.4 基本实现 277 12.4.1 Canvas类 278 12.4.2 GeometricObject类 279 12.4.3 Point类 280 12.4.4 Line类 281 12.4.5 测试实现的代码 282 12.5 理解继承 283 12.6 局限性 285 12.7 改进实现 287 12.8 实现多边形 291 12.9 本章小结 293 关键术语 293 Python关键字、方法和装饰器 293 编程练习题 294 第13章 电子游戏 295 13.1 本章目标 295 13.2 概述 295 13.2.1 事件驱动编程 295 13.2.2 模拟事件循环 296 13.2.3 多线程事件循环 297 13.3 基于turtle的事件驱动编程 300 13.3.1 一个使用按键的简单蚀刻素描程序 300 13.3.2 使用鼠标单击放置turtle 303 13.3.3 弹跳的turtle 305 13.4 创建自己的电子游戏 309 13.4.1 LaserCannon类 310 13.4.2 BoundedTurtle类 312 13.4.3 Drone类 313 13.4.4 Bomb类 315 13.4.5 把所有代码片段整合在一起 315 13.5 本章小结 317 关键术语 317 Python关键字和装饰器 317 编程练习题 317 网络资源一 附录A 安装必需的软件 附录B Python快速参考 附录C turtle参考 附录D 部分“动手实践”参考答案 ---------------------------8060080 - Python程序设计与问题求解(原书第2版)--------------------------- 出版者的话 前言 第1章 引言 1 1.1 计算机科学的两种基本思想:算法和信息处理 1 1.1.1 算法 1 1.1.2 信息处理 3 1.2 现代计算机系统的结构 3 1.2.1 计算机硬件 4 1.2.2 计算机软件 4 1.3 计算系统简史6 1.3.1 在电子数字计算机之前 7 1.3.2 第一台电子数字计算机(1940~1950) 8 1.3.3 第一种编程语言(1950~1965) 9 1.3.4 集成电路、交互和分时 (1965~1975) 10 1.3.5 个人计算和网络(1975~1990) 11 1.3.6 咨询、通信和电子商务(1990~2000) 12 1.3.7 移动应用和普适计算(2000~现今) 13 1.4 开始Python编程 14 1.4.1 在交互式shell中运行代码 14 1.4.2 输入、处理和输出 16 1.4.3 编辑、保存和运行脚本 18 1.4.4 幕后:Python是如何工作的 19 1.5 检测和纠正语法错误 19 1.6 拓展阅读 20 1.7 本章小结 20 1.8 复习题 21 1.9 编程项目 22 第2章 软件开发、数据类型和表达式 23 2.1 软件开发过程 23 2.2 案例研究:所得税计算器 25 2.3 字符串、赋值和注释 27 2.3.1 数据类型 27 2.3.2 字符串字面量 27 2.3.3 转义序列 282.3.4 字符串连接 29 2.3.5 变量和赋值语句 29 2.3.6 程序注释和文档字符串 30 2.4 数字数据类型和字符集 31 2.4.1 整数 31 2.4.2 浮点数 31 2.4.3 字符集 32 2.5 表达式 33 2.5.1 算术表达式 33 2.5.2 混合模式算术和类型转换 35 2.6 函数和模块的使用 36 2.6.1 调用函数:参数和返回值 36 2.6.2 math模块 37 2.6.3 main模块 38 2.6.4 程序格式和结构 39 2.6.5 使用终端命令提示符运行脚本 39 2.7 本章小结 41 2.8 复习题 412.9 编程项目 42 第3章 循环和选择语句 44 3.1 确定迭代:for循环 44 3.1.1 执行语句给定次数 44 3.1.2 计数控制循环 45 3.1.3 增量赋值 46 3.1.4 循环错误:大小差一错误 46 3.1.5 遍历数据序列的内容 47 3.1.6 指定range函数的步长 47 3.1.7 向下计数的循环 48 3.2 格式化输出文本 48 3.3 案例研究:投资报告 50 3.4 选择:if语句和if-else语句 53 3.4.1 布尔类型、比较和布尔表达式 53 3.4.2 if-else语句 54 3.4.3 单路选择语句 55 3.4.4 多路if语句 55 3.4.5 逻辑运算符和复合布尔表达式 56 3.4.6 短路计算 58 3.4.7 测试选择语句 58 3.5 条件迭代:while循环 59 3.5.1 while循环的结构和行为 59 3.5.2 使用while循环的计数控制 60 3.5.3 while True 循环和break语句 61 3.5.4 随机数 62 3.5.5 循环逻辑、错误和测试 63 3.6 案例研究:近似平方根 64 3.7 本章小结 66 3.8 复习题 67 3.9 编程项目 68 第4章 字符串和文本文件 70 4.1 访问字符串中的字符和子字符串 70 4.1.1 字符串的结构 70 4.1.2 下标运算符 71 4.1.3 子字符串切片 72 4.1.4 使用in运算符测试子字符串 72 4.2 数据加密 73 4.3 字符串和数字系统 75 4.3.1 表示数字的位置系统 75 4.3.2 将二进制转换为十进制 76 4.3.3 将十进制转换为二进制 76 4.3.4 转换技巧 77 4.3.5 八进制和十六进制数字 78 4.4 字符串方法 78 4.5 文本文件 81 4.5.1 文本文件及其格式 81 4.5.2 将文本写入文件 82 4.5.3 将数字写入文件 82 4.5.4 从文件中读取文本 82 4.5.5 从文件中读取数字 83 4.5.6 访问和操作磁盘上的文件和 84 4.6 案例研究:文本分析 86 4.7 本章小结 89 4.8 复习题 90 4.9 编程项目 90 第5章 列表和字典 92 5.1 列表 92 5.1.1 列表字面量和基础运算符 93 5.1.2 替换列表中的元素 94 5.1.3 插入和删除列表中的元素 95 5.1.4 搜索列表 96 5.1.5 排序列表 97 5.1.6 修改器方法和None值 97 5.1.7 别名和副作用 97 5.1.8 相等性:对象标识相等和结构相等 98 5.1.9 示例:使用列表查找数字集的中位数 99 5.1.10 元组 100 5.2 定义简单函数 101 5.2.1 简单函数定义的语法 101 5.2.2 形参和实参 102 5.2.3 return语句 102 5.2.4 布尔函数 102 5.2.5 定义main函数 102 5.3 案例研究:生成句子 103 5.4 字典 106 5.4.1 字典字面量 106 5.4.2 插入键和修改值 106 5.4.3 访问值 107 5.4.4 删除键 107 5.4.5 遍历字典 107 5.4.6 示例:十六进制回顾 108 5.4.7 示例:查找列表中的众数 109 5.5 案例研究:非指导式心理治疗 110 5.6 本章小结 113 5.7 复习题 114 5.8 编程项目 114 第6 章 使用函数设计程序 116 6.1 关于函数定义及其运行机制的 快速回顾 116 6.1.1 函数作为抽象机制 117 6.1.2 函数消除冗余 117 6.1.3 函数隐藏复杂性 118 6.1.4 函数利用系统可变性支持 通用方法 118 6.1.5 函数支持分工协作 118 6.2 利用自顶向下的设计解决问题 119 6.2.1 文本分析程序的设计 119 6.2.2 句子生成器程序的设计 120 6.2.3 医生程序的设计 121 6.3 使用递归函数设计程序 122 6.3.1 递归函数的定义 122 6.3.2 跟踪递归函数 123 6.3.3 使用递归定义来构造递归 函数 124 6.3.4 句子结构中的递归应用 124 6.3.5 无限递归 125 6.3.6 递归的优缺点 125 6.4 案例研究:收集文件系统信息 127 6.5 管理程序的命名空间 131 6.5.1 模块变量、参数和临时变量 132 6.5.2 作用域 132 6.5.3 生存期 133 6.5.4 使用关键字定义默认值和 可选参数 133 6.6 高阶函数 135 6.6.1 函数作为第一类数据对象 135 6.6.2 映射 136 6.6.3 过滤 137 6.6.4 化简 137 6.6.5 使用lambda 表达式创建匿名函数 137 6.6.6 创建跳转表 138 6.7 本章小结 139 6.8 复习题 140 6.9 编程项目 141 第7 章 简单图形和图像处理 143 7.1 简单图形 143 7.1.1 海龟绘图法概述 143 7.1.2 海龟绘图法的常用操作 144 7.1.3 建立turtle.cfg 文件并在IDLE 中运行 146 7.1.4 对象实例化和turtle 模块 146 7.1.5 绘制二维图形 147 7.1.6 检查对象属性 148 7.1.7 操作海龟绘图窗口 149 7.1.8 随机漫步 149 7.1.9 颜色和RGB 系统 150 7.1.10 示例:使用随机颜色填充放射状图案 151 7.2 案例研究:分形图形中的 递归模式 152 7.3 图像处理 154 7.3.1 模拟信号和数字信号 155 7.3.2 采样和数字化图像 155 7.3.3 图像文件格式 155 7.3.4 图像处理操作 156 7.3.5 图像的属性 156 7.3.6 images 模块 156 7.3.7 遍历网格的循环模式 158 7.3.8 关于元组的使用 159 7.3.9 将图像转换成黑白 160 7.3.10 将图像转换成灰度 160 7.3.11 复制图像 161 7.3.12 模糊图像 161 7.3.13 边缘检测 162 7.3.14 缩小图像尺寸 163 7.4 本章小结 165 7.5 复习题 166 7.6 编程项目 166 第8 章 图形用户界面 170 8.1 基于终端的程序和基于GUI 的程序 170 8.1.1 基于终端的版本 171 8.1.2 基于GUI 的版本 171 8.1.3 事件驱动编程 172 8.2 编写简单的基于GUI 的程序 173 8.2.1 简单的“Hello world !”程序 173 8.2.2 用于所有GUI 程序的模板 174 8.2.3 定义类和方法的语法 174 8.2.4 子类化和继承的抽象机制 175 8.3 窗口和窗口组件 175 8.3.1 窗口及其属性 175 8.3.2 窗口布局 176 8.3.3 窗口组件的类型及其属性 177 8.3.4 显示图像 178 8.4 命令按钮和响应事件 180 8.5 使用输入字段进行输入和输出 181 8.5.1 文本字段 181 8.5.2 数值数据的整数和浮点数 字段 182 8.5.3 使用弹出式消息框 184 8.6 定义和使用实例变量 185 8.7 案例研究:猜谜游戏回顾 186 8.8 其他有用的GUI 资源 189 8.8.1 使用嵌套框架组织组件 189 8.8.2 多行文本域 190 8.8.3 文件对话框 192 8.8.4 使用提示框获取输入 194 8.8.5 复选按钮 195 8.8.6 单选按钮 196 8.8.7 键盘事件 197 8.8.8 颜色的使用 198 8.8.9 使用颜色选择器 199 8.9 本章小结 201 8.10 复习题 201 8.11 编程项目 202 第9 章 使用类设计程序 204 9.1 深入理解对象和类 205 9.1.1 第一个示例:Student 类 205 9.1.2 文档字符串 207 9.1.3 方法定义 207 9.1.4 __init__ 方法和实例变量 207 9.1.5 __str__ 方法 208 9.1.6 访问器和修改器 208 9.1.7 对象的生存期 208 9.1.8 定义简单类的经验法则 209 9.2 案例研究:掷骰子游戏 210 9.3 数据建模示例 215 9.3.1 有理数 215 9.3.2 有理数的算术运算和运算符 重载 217 9.3.3 比较方法 217 9.3.4 判等和__eq__ 方法 218 9.3.5 存款账户和类变量 219 9.3.6 将账户存入银行 220 9.3.7 使用pickle 实现对象持久化 222 9.3.8 载入对象和try-except 语句 223 9.3.9 纸牌游戏 224 9.4 案例研究:ATM 226 9.5 构建新的数据结构:二维网格 230 9.5.1 Grid 类的接口 231 9.5.2 Grid 类的实现:数据的 实例变量 232 9.5.3 Grid 类的实现:下标和搜索 233 9.6 案例研究:使用块加密算法进行 数据加密 233 9.7 使用继承和多态来组织类 236 9.7.1 继承层次和建模 236 9.7.2 示例1:受限的存款账户 237 9.7.3 示例2:21 点游戏中的 庄家和玩家 238 9.7.4 多态方法 242 9.7.5 面向对象编程的优缺点 242 9.8 本章小结 243 9.9 复习题 244 9.10 编程项目 245 第10章 多线程、网络和客户端/服务器编程 247 10.1 线程和进程 247 10.1.1 线程 248 10.1.2 睡眠线程 250 10.1.3 生产者、消费者和同步 251 10.2 读者和写者问题 256 10.2.1 使用SharedCell类 257 10.2.2 实现SharedCell类的接口 258 10.2.3 实现SharedCell类的帮助方法 259 10.2.4 使用Counter对象测试SharedCell类 260 10.2.5 定义线程安全的类 260 10.3 网络、客户端和服务器 262 10.3.1 IP地址 262 10.3.2 端口、服务器和客户端 263 10.3.3 套接字和日期/时间客户端脚本 263 10.3.4 日期/时间服务器脚本 264 10.3.5 双向聊天脚本 266 10.3.6 多个客户端的同时处理 267 10.4 案例研究:建立医生和病人之间的双向对话 269 10.5 本章小结 273 10.6 复习题 274 10.7 编程项目 274 第11章 查找、排序和复杂度分析 276 11.1 衡量算法效率 276 11.1.1 衡量算法的运行时间 276 11.1.2 指令计数 278 11.2 复杂度分析 280 11.2.1 复杂度的量级 280 11.2.2 大O符号 281 11.2.3 常数因子的作用 281 11.2.4 衡量算法占用的内存 282 11.3 查找算法 282 11.3.1 查找最小数 283 11.3.2 列表的顺序查找 283 11.3.3 最好情况、最坏情况和平均情况的算法性能 283 11.3.4 列表的二分查找 284 11.4 基本排序算法 286 11.4.1 选择排序 286 11.4.2 冒泡排序 287 11.4.3 插入排序 288 11.4.4 最好情况、最坏情况和平均情况的算法性能回顾 289 11.5 更快的排序算法 289 11.5.1 快速排序 290 11.5.2 归并排序 293 11.6 指数算法:斐波那契递归 296 11.7 将斐波那契递归从指数算法转换成线性算法 296 11.8 案例研究:算法分析器 297 11.9 本章小结 301 11.10 复习题 302 11.11 编程项目 302 附录A Python资源 304 附录B 安装images库和breezypythongui库 306 附录C 图像处理API 307 附录D 从Python到Java和C++ 308 |