图书前言

前 言

欢迎阅读《学习Python 中文版》(第6 版)。本书使用Python 语言来讲解编程概念和传授解决问题的技能,不要求你之前有任何编程经验。通过容易理解的例子、伪代码、流程图和其他工具,你将学会如何设计程序的逻辑,然后用Python 实现这些程序。本书是编程入门课程或以Python 为语言的编程逻辑和设计课程的理想选择。

和Starting Out With 系列的其他所有书籍一样,本书的特点是内容清晰、友好、易懂。另外,书中提供丰富的示例程序,它们都简洁而实用。一些例子比较短,强调了当前的特定编程主题,另一些例子侧重于问题的解决,涉及的东西会多一些。每章都提供一个或多个称为“聚光灯”的案例学习,对一个具体问题进行逐步分析,并展示如何解决这个问题。

首先讲控制结构,然后讲类

虽然Python 是一种完全面向对象的编程语言,但你不必理解面向对象的概念就可以开始用Python 进行编程。本书首先介绍数据存储、输入和输出、控制结构、函数、序列/列表、文件I/O 以及创建标准库的类的对象等基础知识。然后,介绍如何编写类,探索继承和多态性的主题以及如何编如何编写递归函数。最后,介绍如何开发简单的、事件驱动的GUI 应用程序。

第6 版的变化

本书沿用第5 版的写作风格,同时也做了不少补充和改进,总结如下:

• 针对Python 3.11 进行全面更新 本书使用最高到Python 3.11 版的语言特性

• with 语句 第6 章现在引入with 语句来作为打开文件的一种方式,全书增加了许多with 语句与文件结合使用的例子

• 多重赋值 这一版在第2 章引入了多重赋值的概念

• 单行if 语句 第3 章专门用一节来解释单行if 语句

• 条件表达式 第3 章介绍了条件表达式和三元操作符

• 海象操作符和赋值表达式 第3 章新增一节来讲述海象操作符和赋值表达式,这一章提供在if 语句中使用赋值表达式的例子,第4 章提供在while 循环中使用赋值表达式的例子

• while 循环作为计数控制循环 第4 章新增一节来讲述计数器变量和如何使用while 语句编写计数控制循环

• 单行while 循环 第4 章新增一节来讲述单行while 循环

• 为循环结构使用break 语句、continue 语句和else 语句 第4 章新增一节来讲述如何为循环使用break 和continue,以及如何为循环使用else 子句,后者为Python 独有

• 仅关键字参数 第5 章讨论仅关键字参数以及如何在函数中实现它们

• 仅位置参数 第5 章讨论仅位置参数以及如何在函数中实现它们

• 默认实参 第5 章新增一节来讲述函数的默认实参

• 为列表使用count 和sum 第7 章讨论如何为列表使用count 方法和sum 函数

• 在元组中存储可变对象 第7 章新增一节来讲述元组的“不可变”性,以及如何在元组中存储“可变”对象

• 字典合并和更新操作符 第9 章新增一节来讨论字典的合并和更新操作符。

各章内容概览

第1 章“计算机和编程概述”

本章首先以具体和容易理解的方式来诠释计算机如何工作、数据如何存储和处理,以及我们为什么要用高级语言来写程序。然后介绍Python 语言、交互模式、脚本模式以及Python 自带的IDLE 开发环境。

第2 章“输入、处理和输出”

本章介绍程序开发周期、变量、数据类型以及用顺序结构来写的简单程序,学生将学习如何编写简单的程序,从键盘读取输入,进行数学运算,并生成格式化的屏幕输出。然后还要介绍作为程序设计工具的伪代码和流程图。本章最后介绍海龟图形库(选读)。

第3 章“判断结构和布尔逻辑”

在本章中,学生将学习关系操作符和布尔表达式,并了解如何用判断结构控制程序的执行流程。本章要讨论if 语句、if-else 语句和if-elif-else 语句,还要讨论嵌套判断结构和逻辑操作符。本章包括一个选读的海龟图形小节,讨论了如何使用判断结构来测试海龟的状态。

第4 章“重复结构”

本章介绍如何使用while 和for 这两个循环结构,讨论计数器、累加器和哨兵,讨论如何利用循环结构来校验输入。本章最后的选读小节讨论如何在循环中利用海龟图形库来绘制图形。

第5 章“函数”

本章首先介绍如何编写和调用不返回值的函数(void)(译注:和其他语言不同,Python 并没有专门提供void 关键字。),解释使用函数对程序进行模块化的好处并讨论自上而下设计方法。然后讨论如何向函数传递实参,讨论常用的库函数——例如用于生成随机数的函数。在讨论完如何调用库函数和使用其返回值之后,将讨论如何编写和调用自定义函数。最后讨论如何使用模块来组织函数。选读小节讨论如何使用函数对海龟图形代码进行模块化。

第6 章“文件和异常”

本章介绍顺序文件输入和输出,学生将学习如何读写大型数据集,并将数据作为字段和记录来存储。最后讨论异常,并展示如何编写异常处理代码。

第7 章“列表和元组”

本章介绍Python 的“序列”概念,并探讨两种常见的 Python 序列:列表和元组,学生将学习如何使用列表进行类似于数组的操作——例如在列表中存储对象、遍历列表、查找列表中的数据项以及对列表项进行求和/ 求平均值。本章讨论列表推导式、切片以及许多列表方法。我们兼顾一维列表和二维列表。本章还讨论如何用matplotlib 包提供的功能将列表数据绘制成图表。

第8 章“深入字符串”

本章更深入地讨论字符串处理,讨论了字符串切片和遍历字符串中的单独字符的算法,并介绍如何用几个内置函数和字符串方法来进行字符和文本处理。本章还有字符串标记化(tokenizing)和解析CSV 文件的例子。

第9 章“字典和集合”

本章介绍字典和集合数据结构,讨论如何在字典中以“键值对”的形式存储数据、查找值、更改现有值、添加新的键值对、删除键值对以及如何写字典推导式,还要学习如何在集合中将值作为具有唯一性的元素来存储,并执行常见的集合操作——例如并集(union)、交集(intersection)、差集(difference) 和对称差集(symmetric difference),还要介绍了集合推导式,最后讨论对象序列化(Python 称为“腌制”),并介绍Python 的pickle 模块。

第10 章“类和面向对象编程”

本章比较过程式和面向对象编程实践,讨论类和对象的基本概念,讨论属性、方法、封装和数据隐藏、__init__ 方法(类似于构造函数)、取值方法(accessor)和赋值方法(mutator)。学生将学习如何用UML对类进行建模,以及如何从特定的问题中找出合适的类。

第11 章“继承”

本章继续研究类,讨论继承和多态性,所涉及的主题包括超类(基类)、子类(派生类)、__init__ 方法在继承中的作用、方法重写和多态性。

第12 章“递归”

本章讨论递归以及如何用它优雅地解决一些令人挠头的问题,展示了递归调用的一个可视化跟踪并讨论递归应用程序,介绍如何用递归算法来完成许多任务——包括计算阶乘,寻找最大公约数(GCD),对列表中的一系列数值进行求和。另外,还要介绍了经典的汉诺塔例子,这个问题特别适合用递归来求解。

第13 章“GUI 编程”

本章讨论如何使用 Python 的tkinter 模块来设计 GUI 应用程序,讨论许多基本组件,例如标签、按钮、文本输入框、单选钮、复选框、列表框和对话框等,介绍事件在GUI应用程序中如何工作,以及如何编写回调函数来处理事件,最后还讨论了Canvas(画布)组件以及如何使用它来绘制直线、矩形、椭圆、弧线、多边形和文本。

第14 章“数据库编程”

本章介绍数据库编程。首先讲述数据库的基本概念——例如表、行和主键,然后讨论如何在Python 中使用SQLite 连接数据库,讨论SQL,学生将学习如何执行查询以及如何执行语句来查找行、添加新行、更新现有行和删除行。本章演示执行CRUD(创建、读取、更新和删除)操作的应用程序,最后讨论关系数据库。

附录 A“安装 Python”

本附录解释如何下载和安装最新的 Python 发行版。

附录B“IDLE 简介”

本附录概述随同Python 安装的IDLE 集成开发环境。

附录 C“ASCII 字符集”

本附录列出完整ASCII 字符集供参考。

附录D“预定义颜色名称”

本附录列出可用于海龟图形库、matplotlib 和 tkinter 的预定义颜色名称。

附录 E“import 语句”

本附录讨论使用 import 语句的各种方法。例如,可以使用import 语句来导入模块、类、函数或者为模块指定别名。

附录F“用format() 函数格式化输出”

本附录讨论format() 函数的用法, 介绍了如何使用它的格式说明符(format specifier)来控制数值的显示方式。

附录G“用pip 工具安装模块”

本附录讨论如何使用 pip 工具安装来自 Python Package Index(PyPI)的第三方模块。

附录 H“知识检查点答案”

本附录针对散布于全书的“知识检查点”给出答案。

本书的组织方式

本书以循序渐进的方式讲授编程。每一章都涵盖一组主要的主题,并随着讲解的进行逐步建立起知识体系。尽管各章很容易按照现有的顺序讲授/ 自学,但在讲授/ 自学顺序上有一些灵活性。下图展示了各章的依赖性。每个方框都代表一章或多章。箭头从一章指向在它之前必须掌握的前一章内容。

本书特色

本书具有以下特色内容:

概念陈述 本书的每个主题小节都从陈述一个概念开始,概括当前小节的主要内容

示例程序 每一章都提供大量或完整或不完整的示例程序,每个旨在强调当前的主题而设计的

聚光灯 每一章都有一个或多个“聚光灯”案例研究,会详细地、逐步骤地分析问题,并告诉学生如何解决这些问题

视频讲解 专门为本书开发的“视频讲解”(VideoNote)网上视频,可在https://media.pearsoncmg.com/ph/esm/ecs_gaddis_sowpython_6e/cw/ 观看。该图标分布于全书,提醒学生观看针对特定主题的视频。由于是英文版视频,所以本书的“视频讲解”保留了视频的英文名称,方便在上述页面上查找

注意 全书多处提供类似段落,用于简要解释与当前主题相关的有趣或常被误解的要点

提示 旨在告诉学生用于处理不同编程问题的最佳技术

警告 旨在提醒学生注意可能导致程序出错或数据丢失的编程技术或做法

检查点 散布于每一章,旨在检查学生是否已经掌握了一个新的主题

复习题 每章都提供了一套全面而多样的复习题和练习,包括选择题、判断题、算法工作台和简答题

编程练习 每一章都提供大量编程练习,旨在巩固学生对当前所学主题的掌握程度补充材料

• 学生资源 出版商为本书提供了许多学生资源。以下资源可从https://media.pearsoncmg.com/ph/esm/ecs_gaddis_sowpython_6e/cw/ 获取:

◆ 书中所有示例程序的源代码

◆ 英文版勘误(中文版资讯和勘误请访问https://bookzhou.com)

◆ 本书配套的英文版VideoNote(视频讲解)

• 中文版资源 本书的源代码大部分都进行了中文本地化,包括注释、程序中显示的文本等。除此之外,还对一些bug 进行了修正。请访问https://bookzhou.com 并根据需要下载中文版资源。

• 教师资源 以下补充材料仅向提出申请的在校教师提供:

◆ 所有复习题的答案

◆ 所有编程练习的答案

◆ 各章的PowerPoint 幻灯片

◆ 题库

请访问培生教育教师资源中心(www.pearsonhighered.com/irc)或联系当地培生教育代表(或发送电子邮件coo@netease.com),了解如何获取这些资料。