当前位置: 首页 > news >正文

新书推荐 |《Python程序设计(原书第2版)》

新书推荐

《Python程序设计(原书第2版)》

长按二维码
了解及购买

经典畅销书籍《Java核心技术》的作者Cay Horstmann撰写,非常适合Python初学者和爱好者阅读

编辑推荐

本书由经典畅销书籍《Java核心技术》的作者Cay Horstmann撰写,非常适合Python初学者和爱好者阅读,不仅能够帮助新手快速入门,掌握基础知识,更有益于培养解决实际问题的思维和能力。

本书特点

首先介绍基本语法,较早提出对象的概念,但在掌握一定基础后才开始设计自定义类。

将解决方案分解为详尽的步骤,循序渐进地引导读者利用学到的概念解决有趣的问题。

从算法设计到流程图、测试用例、逐步提炼、修改算法等,提供明确的问题解决策略。

每章都包含大量的自测题、复习题和编程练习题,有效帮助读者巩固知识并提升能力。

扩充了图形和图像处理方面的知识,还增加了一些新的案例来演示数据的可视化表示。

“工具箱”模块介绍了Python库中很多有用的包,可用于解决章末的跨学科编程练习。

配有丰富的教辅资源,源代码可免费下载,方便读者结合书中内容更好地学习和进阶。

内容简介

本书面向Python初学者,介绍了数字、字符串、列表、字典、集合、选择结构、循环结构、函数设计、面向对象编程、文件操作等基础知识。全书通过大量实际案例来演示这些技术和应用,重视计算思维的培养和训练,由浅入深地将解决问题的完整方案一步步呈现在读者面前。这一版采用Python 3,并对全书结构进行了优化,既可作为高等院校计算机专业第一门程序设计课的教材,也可供Python爱好者自学参考。

作者简介

凯•霍斯特曼(Cay Horstmann) 圣何塞州立大学计算机科学系教授,Java的倡导者,经常在开发人员会议上发表演讲。他是《Java核心技术》的作者,同时也关注Python、Scala、C++等语言,为专业程序员和计算机科学专业学生编写过数十本图书。

兰斯•尼塞斯(Rance Necaise) 兰道尔夫-麦肯学院计算机科学系副教授,撰写了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技术书籍。

目录

出版者的话

译者序

前言

第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

相关文章:

  • 新书推荐 |《KVM实战:原理、进阶与性能调优》
  • 高并发编程知识体系
  • 倒计时5天!云计算技术沙龙[北京站]召开在即
  • CSS宣布支持三角函数,下一步是什么?
  • Serverless:云时代的软件架构核心思想
  • 新书推荐 |《C# 7.0本质论(英文版)》
  • 新书推荐 |《机器学习精讲:基础、算法及应用》
  • 1/10个iPhone Xs = 英伟达最便宜AI计算机,这是唯一的“核弹”?
  • 新书推荐《嵌入式实时操作系统:RT-Thread设计与实现》
  • 新书推荐 |《硅谷设计之道:探寻硅谷科技公司的体验设计策略》
  • 叫板 Android 开发!跨平台应用开发神器 Flutter 又添开源插件!
  • AI大牛推荐的八本必读NLP书籍(建议收藏)
  • 新书推荐 |《HTML 5与CSS 3权威指南(第4版•上下册)》
  • 以女大学生相亲为例,给你讲明白数据挖掘算法
  • 新书推荐 |《网络空间安全防御与态势感知》
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • HTTP--网络协议分层,http历史(二)
  • HTTP中的ETag在移动客户端的应用
  • JDK 6和JDK 7中的substring()方法
  • Lsb图片隐写
  • mysql常用命令汇总
  • ng6--错误信息小结(持续更新)
  • spring-boot List转Page
  • vue脚手架vue-cli
  • windows-nginx-https-本地配置
  • XForms - 更强大的Form
  • yii2中session跨域名的问题
  • 从0到1:PostCSS 插件开发最佳实践
  • 回顾 Swift 多平台移植进度 #2
  • 类orAPI - 收藏集 - 掘金
  • 如何使用 JavaScript 解析 URL
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据仓库的几种建模方法
  • 学习JavaScript数据结构与算法 — 树
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (层次遍历)104. 二叉树的最大深度
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (排序详解之 堆排序)
  • (七)c52学习之旅-中断
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转) ns2/nam与nam实现相关的文件
  • (转)Google的Objective-C编码规范
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .NET中的十进制浮点类型,徐汇区网站设计
  • /bin、/sbin、/usr/bin、/usr/sbin
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [C++] 多线程编程-thread::yield()-sleep_for()