内容简介

Python程序设计基础(原书第4版)》旨在教会读者如何使用Python语言进行程序设计以及解决问题。书中配有大量浅显易懂的实例、伪代码、流程图,各章还附有学习案例,旨在通过逐步解析的方式帮助读者掌握解决问题的方法。
Python程序设计基础(原书第4版)》从计算机的工作原理、数据的存与备份等基础知识引入,先对Python语言的交互模式、脚本模式以及IDLE环境进行概述,然后依次介绍Python的决策结构和布尔逻辑、文件和异常、列表和元组、类和面向对象编程等知识,*后还介绍了事件驱动的GUI编程。

作者简介

托尼·加迪斯(TonyGaddis)海伍德社区学院高级讲师,曾被评为北卡罗来纳州社区学院"年度教师",并获得了国家工作人员和组织发展研究所的教学卓越奖。Tony也提供对公司和机构(包括NASA的肯尼迪航天中心)的培训。他著有《StartingOutwithC++》和《StartingOutwithJava》,并与人合著了《StartingOutwithVisualBasic2005》等。


译者介绍
苏小红,哈尔滨工业大学计算机学院教授,本校计算机语言基础教研室主任、智能软件技术研究中心主任。研究方向为智能软件工程、缺陷报告自动分派与开发者推荐、软件缺陷检测与漏洞挖掘等。

叶麟,哈尔滨工业大学计算机科学与技术学院讲师。研究方向是信息安全、网络安全、计算机网络。

袁永峰,哈尔滨工业大学计算机学院副教授,曾承担或参与国家自然科学基金7项,参与重点项目2项。研究方向为生物系统建模、计算机视觉、数据可视化。

目录

出版者的话
译者序
前言
第1章 计算机与编程1
1.1 简介1
1.2 硬件和软件2
1.2.1 硬件2
1.2.2 软件4
1.3 计算机如何存储数据5
1.3.1 存储数字6
1.3.2 存储字符7
1.3.3 高级数字存储8
1.3.4 其他类型的数据8
1.4 程序如何工作9
1.4.1 从机器语言到汇编语言11
1.4.2 高级语言11
1.4.3 关键字、操作符和语法概述12
1.4.4 编译器和解释器13
1.5 使用Python14
1.5.1 安装Python14
1.5.2 Python解释器14
1.5.3 交互模式15
1.5.4 在脚本模式下编写和运行Python程序16
1.5.5 IDLE编程环境16
复习题17
第2章 输入、处理与输出20
2.1 设计一个程序20
2.1.1 程序开发周期20
2.1.2 设计过程中的更多技术细节21
2.1.3 理解程序将要完成的任务21
2.1.4 决定为完成任务所需采取的步骤21
2.1.5 伪码22
2.1.6 流程图22
2.2 输入、处理与输出23
2.3 用print函数显示输出24
2.4 注释26
2.5 变量27
2.5.1 用赋值语句创建变量27
2.5.2 变量命名规则29
2.5.3 用print函数显示多项内容30
2.5.4 变量再赋值30
2.5.5 数值数据类型和数值文本31
2.5.6 用数据类型str来存储字符串32
2.6 从键盘读取输入34
2.7 执行计算37
2.7.1 浮点数除法与整数除法39
2.7.2 运算符的优先级39
2.7.3 用圆括号将运算分组40
2.7.4 指数运算符42
2.7.5 求余运算符42
2.7.6 将数学公式转换成程序语句43
2.7.7 混合数据类型的表达式与数据类型转换45
2.7.8 长语句拆分46
2.8 关于数据输出的更多介绍47
2.8.1 抑制print函数的换行功能47
2.8.2 指定一个输出项分隔符47
2.8.3 转义字符48
2.8.4 用运算符+来显示多个输出项49
2.8.5 数据格式化49
2.8.6 科学记数法形式的格式化50
2.8.7 插入逗号分隔符51
2.8.8 指定最小域宽51
2.8.9 格式化浮点数为百分数形式52
2.8.10 格式化整数52
2.9 有名常量53
2.10 机器龟图形库简介54
2.10.1 使用机器龟来画线55
2.10.2 机器龟的转向55
2.10.3 将机器龟的朝向设置为特定的角度57
2.10.4 获取机器龟的当前朝向57
2.10.5 画笔的抬起和放下57
2.10.6 绘制圆和点58
2.10.7 修改画笔的宽度59
2.10.8 改变画笔的颜色59
2.10.9 修改背景的颜色59
2.10.10 重新设置屏幕59
2.10.11 指定图形窗口的大小59
2.10.12 移动机器龟到指定的位置60
2.10.13 获取机器龟的当前位置60
2.10.14 控制机器龟的动画速度61
2.10.15 隐藏机器龟61
2.10.16 在图形窗口中显示文本61
2.10.17 图形填充62
2.10.18 用命令turtle.done()来保持图形窗口的开放状态63
复习题70
第3章 选择结构与布尔逻辑76
3.1 if语句76
3.1.1 布尔表达式与关系运算符77
3.1.2 综合应用79
3.2 if-else语句82
3.3 字符串比较84
3.4 嵌套的选择结构与if-elif-else语句88
3.4.1 测试一组条件91
3.4.2 if-elif-else语句93
3.5 逻辑运算符94
3.5.1 运算符and95
3.5.2 运算符or95
3.5.3 短路定值96
3.5.4 运算符not96
3.5.5 再次分析判定贷款资格的程序96
3.5.6 又一个判定贷款资格的程序97
3.5.7 用逻辑运算符检查数据范围98
3.6 布尔变量99
3.7 机器龟图形库:判断机器龟的状态100
3.7.1 获取机器龟的位置100
3.7.2 获取机器龟的朝向100
3.7.3 检测画笔是否被放下101
3.7.4 判断机器龟是否可见101
3.7.5 获取当前颜色101
3.7.6 获取画笔的线宽102
3.7.7 获取机器龟的画线速度102
复习题107
第4章 循环结构114
4.1 循环结构简介114
4.2 while循环:条件控制的循环115
4.2.1 while循环是先测试的循环117
4.2.2 无限循环119
4.3 for循环:计数控制的循环120
4.3.1 在for循环中使用range函数122
4.3.2 在循环内部使用目标变量123
4.3.3 让用户控制循环迭代126
4.3.4 生成一个取值范围从高到低的迭代序列127
4.4 计算累加和128
4.5 标记131
4.6 验证输入的循环133
4.7 嵌套循环137
4.8 机器龟图形库:用循环语句进行绘图设计142
复习题145
第5章 函数150
5.1 函数简介150
5.1.1 使用函数模块化程序的好处150
5.1.2 void函数和有返回值函数151
5.2 定义和调用void函数152
5.2.1 函数名152
5.2.2 定义和调用函数152
5.2.3 Python的缩进155
5.3 使用函数设计程序156
5.3.1 使用函数流程图化程序156
5.3.2 自顶向下的设计157
5.3.3 层次图157
5.3.4 暂停执行直到用户按
 Enter键160
5.4 局部变量160
5.5 向函数传递参数162
5.5.1 参数变量的作用域164
5.5.2 传递多个参数165
5.5.3 改变参数166
5.5.4 关键字参数168
5.6 全局变量和全局常量169
5.7 有返回值的函数简介:生成随机数172
5.7.1 标准库函数和import语句173
5.7.2 产生随机数173
5.7.3 交互模式下的随机数实验176
5.7.4 randrange、random和uniform函数179
5.7.5 随机数种子179
5.8 自己编写有返回值的函数181
5.8.1 充分利用return语句182
5.8.2 如何使用有返回值的函数182
5.8.3 使用IPO图184
5.8.4 返回字符串187
5.8.5 返回布尔值188
5.8.6 返回多个值189
5.9 math模块190
5.10 在模块中存储函数192
5.11 机器龟图形库:使用函数模块化代码195
复习题200
第6章 文件和异常208
6.1 文件输入和输出简介208
6.1.1 文件类型209
6.1.2 文件访问方法210
6.1.3 文件名和文件对象210
6.1.4 打开文件211
6.1.5 指定文件的位置211
6.1.6 将数据写入文件212
6.1.7 从文件读取数据213
6.1.8 将换行符连接到字符串215
6.1.9 读取字符串并删除其中的换行符216
6.1.10 将数据追加到已有文件217
6.1.11 读写数值数据218
6.2 使用循环处理文件221
6.2.1 使用循环读取文件并检查文件的结尾221
6.2.2 使用Python的for循环读取多行223
6.3 处理记录227
6.4 异常237
6.4.1 处理多个异常242
6.4.2 使用except语句捕获所有异常243
6.4.3 显示异常的默认错误信息244
6.4.4 else语句245
6.4.5 f?inally语句246
6.4.6 如果异常没有被处理怎么办247
复习题247
第7章 列表和元组251
7.1 序列251
7.2 列表简介251
7.2.1 重复运算符252
7.2.2 使用for循环在列表上迭代253
7.2.3 索引253
7.2.4 len函数254
7.2.5 列表是可变的254
7.2.6 连接列表256
7.3 列表切片257
7.4 使用in操作符在列表中查找元素259
7.5 列表方法和有用的内置函数261
7.5.1 del语句265
7.5.2 min和max函数265
7.6 复制列表266
7.7 处理列表267
7.7.1 计算列表中的数值之和269
7.7.2 计算列表中数值的平均值269
7.7.3 将列表作为参数传递给函数270
7.7.4 从函数返回一个列表271
7.7.5 处理列表和文件274
7.8 二维列表277
7.9 元组280
7.9.1 重点是什么281
7.9.2 列表和元组间的转换282
7.10 使用matplotlib包画出列表数据282
7.10.1 导入pyplot模块283
7.10.2 绘制折线图283
7.10.3 绘制条形图290
7.10.4 绘制饼图293
复习题296
第8章 深入字符串302
8.1 字符串的基本操作302
8.1.1 访问字符串中的单个字符302
8.1.2 字符串连接305
8.1.3 字符串是不可变的306
8.2 字符串切片307
8.3 测试、搜索和操作字符串311
8.3.1 使用in和notin测试字符串311
8.3.2 字符串方法311
8.3.3 重复操作符318
8.3.4 分割字符串319
复习题321
第9章 字典和集合326
9.1 字典326
9.1.1 创建字典326
9.1.2 从字典中检索值327
9.1.3 使用in和not操作符测试字典中的值327
9.1.4 向已有字典中添加元素328
9.1.5 删除元素329
9.1.6 获取字典中元素的数量329
9.1.7 字典中数据类型的混合330
9.1.8 创建空字典331
9.1.9 使用for循环遍历字典331
9.1.10 常用字典方法332
9.2 集合344
9.2.1 创建集合345
9.2.2 获取集合中元素的数量345
9.2.3 添加和删除元素346
9.2.4 使用for循环在集合上迭代347
9.2.5 使用in和notin操作符判断集合中的值348
9.2.6 求集合的并集348
9.2.7 求集合的交集349
9.2.8 求两个集合的差集349
9.2.9 求集合的对称差集350
9.2.10 求子集和超集350
9.3 序列化对象354
复习题359
第10章 类与面向对象编程365
10.1 面向过程和面向对象程序设计365
10.1.1 对象可重用性366
10.1.2 一个常见的对象例子366
10.2 类367
10.2.1 类定义368
10.2.2 隐藏属性373
10.2.3 在模块中存储类375
10.2.4 BankAccount类376
10.2.5 _?_str_?_方法379
10.3 使用实例381
10.3.1 Accessor和Mutator方法385
10.3.2 传递对象作为参数388
10.4 设计类的技巧400
10.4.1 统一建模语言400
10.4.2 使用类解决问题400
10.4.3 确定一个类的任务405
10.4.4 这仅仅是开始408
复习题408
第11章 继承413
11.1 继承简介413
11.1.1 泛化和特殊化413
11.1.2 继承和isa关系413
11.1.3 UML图中的继承420
11.2 多态424
复习题430
第12章 递归432
12.1 递归简介432
12.2 递归求解问题434
12.2.1 使用递归计算阶乘434
12.2.2 直接递归和间接递归436
12.3 递归算法示例437
12.3.1 递归求解列表中元素的和437
12.3.2 斐波那契数列438
12.3.3 求最大公约数439
12.3.4 汉诺塔440
12.3.5 递归与循环443
复习题443
第13章 GUI编程446
13.1 GUI446
13.2 tkinter模块447
13.3 Labe

前言/序言

Python程序设计基础(原书第4版)》面向编程零基础的初学者,使用Python语言来讲授编程概念和解决问题的方法。通过易于理解的示例、伪代码、流程图和其他工具,学生可以学习如何设计程序的逻辑,然后使用Python实现这些程序。《Python程序设计基础(原书第4版)》是非常理想的编程入门课程的教材,也适合作为以Python为语言的编程逻辑与设计课程的教材。
Python程序设计基础(原书第4版)》的特点是清晰、友好、易于理解的描述。此外,它有着丰富而简明实用的示例程序,包括突出特定编程主题的简短示例,以及更深入解决问题的程序。每章提供一个或多个案例研究,对具体问题进行逐步分析,并向学生展示如何解决它。
先控制结构,然后类
Python是一种完全面向对象的编程语言,但是读者不必在开始编程时就去理解面向对象的概念。本教材首先向读者介绍数据存储、输入和输出、控制结构、函数、序列和列表、文件I/O以及从标准类库中创建的对象的基本原理。然后,介绍如何编写类,探索继承和多态性以及学习编写递归函数。最后,介绍如何开发简单的事件驱动的GUI应用程序。
第4版的变化
Python程序设计基础(原书第4版)》清晰的写作风格和以前版本一样。然而,也做出了许多补充和改进,总结如下:
在第2章到第5章中增加了Python龟(Turtle)图形库的新节。机器龟图形库是Python的标准部分,以有趣的方式向从来没有编写过代码的学生介绍编程概念。这个库允许学生通过编写Python语句在画布上移动游标来绘制图形。
 新的机器龟图形库章节设计灵活,可以作为选学内容纳入现有的教学大纲,或者完全跳过。
第2章增加了关于命名常量的新节(2.9节)。虽然Python不支持真正的常量,但可以创建变量名,这些名称象征着在程序执行时不应更改。本节教授学生避免使用“幻数”,并创建符号名,使其代码更加自文档化和易于维护。
第7章增加了使用matplotlib包从列表中绘制图表的新节(7.10节)。新节介绍了如何安装matplotlib包,并使用它绘制折线图、条形图和饼图。
第13章增加了在GUI应用程序中使用Canvas控件绘制图形的新节(13.9节)。新节介绍了如何使用Canvas控件绘制直线、矩形、椭圆、弧、多边形和文本。
增加了一些新的、更具挑战性的编程问题。
附录E是一个讨论各种形式import语句的新附录。
附录F是一个讨论如何使用pip实用程序安装第三方模块的新附录。
各章概览
第1章:计算机与编程
本章首先对计算机的工作方式、数据的存储和操作方式以及使用高级语言编写程序的原因进行非常具体和易于理解的解释。本章中还介绍了Python、交互模式、脚本模式和IDLE环境。
第2章:输入、处理与输出
本章介绍程序的开发周期、变量、数据类型和使用顺序结构编写的简单程序。学生可以学习如何编写简单的程序:从键盘读取输入、执行数学运算并输出到屏幕上。作为设计程序的工具,本章也对伪码和流程图进行了介绍。本章最后介绍了机器龟图形库。
第3章:选择结构与布尔逻辑
本章介绍关系运算符和布尔表达式,并展示如何使用选择结构控制程序流程,涉及if、if-else和if-elif-else语句,还讨论了嵌套选择结构和逻辑运算符。本章最后讨论了如何使用选择结构测试机器龟的状态。
第4章:循环结构
本章展示如何使用while循环和for循环创建循环结构,讨论了计数器、累加器和标记,以及验证输入的循环技术。本章最后介绍如何使用循环和机器龟图形库进行绘图设计。
第5章:函数
本章首先介绍如何编写和调用void函数,展示了使用函数对程序进行模块化的好处,并讨论了自顶向下的设计方法。然后,介绍如何将参数传递给函数,讨论了常见的库函数,如生成随机数的函数。在学习如何调用库函数并使用其返回值之后,讲解如何定义和调用自己的函数。接下来介绍如何使用模块来组织函数。本章最后讨论了如何使用函数模块化机器龟图形库代码。
第6章:文件和异常
本章介绍顺序文件的输入和输出,学习如何读取和写入大量数据,并将数据存储为字段和记录。本章最后讨论异常并演示如何编写异常处理的代码。
第7章:列表和元组
本章介绍Python中序列的概念,并探讨两个常见Python序列的使用:列表和元组。学生学习使用列表进行类似数组的操作,例如在列表中存储对象、遍历列表、搜索列表中的元素以及计算列表中元素的总和和平均值。本章讨论了切片和许多列表方法,涉及一维和二维列表。本章还包括对matplotlib包的讨论,以及如何使用它从列表中绘制图表。
第8章:深入字符串
本章介绍如何更加细致地处理字符串,讨论遍历字符串中各个字符的字符串切片和算法,并介绍用于字符和文本处理的内置函数和字符串方法。
第9章:字典和集合
本章介绍字典和集合数据结构,学习将数据存储为字典中的键值对、检索值、更改现有值、添加新键值对以及删除键值对。学生学习如何将值存储为集合中的唯一元素,并执行常见的集合操作,例如并集、交集、差集和对称差集。本章最后对对象序列化进行了讨论,并介绍了Pythonpickle模块。
第10章:类与面向对象编程
本章比较面向过程和面向对象的编程实践,涵盖了类和对象的基本概念,并讨论了属性、方法、封装和数据隐藏、_?_init_?_函数(类似于构造函数)、访问器、赋值器,学习如何使用UML对类进行建模,以及如何在特定问题中查找类。
第11章:继承
本章继续学习继承和多态,所涉及的主题包括超类、子类、_?_init_?_函数在继承、方法覆盖和多态中的工作方式。
第12章:递归
本章讨论递归及其在问题求解中的应用,给出了递归调用的可视化跟踪和递归应用,展示了许多任务的递归算法,例如查找因子,求最大公约数,对列表中的一系列值求和,并给出了经典汉诺塔的例子。
第13章:GUI编程
本章讨论使用Python的tkinter模块设计GUI应用程序的基本方法,包括标签、按钮、输入字段、单选按钮、复选框和对话框等基本控件。学生还可以学习GUI应用程序中的工作方式以及如何编写回调函数来处理事件。本章包括对Canvas控件的讨论,以及如何使用它来绘制直线、矩形、椭圆、弧、多边形和文本。
附录A:Python安装
本附录解释如何下载和安装Python3解释器。
附录B:IDLE简介
本附录概述Python附带的IDLE集成开发环境。
附录C:ASCII码表
作为参考,本附录列出ASCII字符集。
附录D:预定义颜色
本附录列出可与机器龟图形库、matplotlib和tkinter一起使用的预定义颜色名称。
附录E:import语句详解
本附录讨论使用import语句的各种方法。例如,可以使用import语句导入模块、类、函数或为模块分配别名。
附录F:使用pip工具安装模块
本附录讨论如何使用pip实用工具从Python包索引或PyPI安装第三方模块。
附录G:检查点参考答案
本附录给出了正文中出现的检查点问题的答案。
Python程序设计基础(原书第4版)》的组织
本教材以循序渐进的方式讲授编程。每一章都包含了一组主题,并随着学生的进展来逐步积累知识。虽然可以很容易地按照章节现在的顺序进行讲授,但可以有一定的灵活性,以按照希望的顺序进行教学安排。图P-1显示了章节之间的依赖关系。箭头指明讲授某章节之前必须覆盖的章节。

图P-1 章节依赖关系
Python程序设计基础(原书第4版)》的特点
概念每个主要节从概念开始,概括了本节的要点。
示例程序每章都有大量完整和部分的示例程序,旨在突出当前主题。
聚光灯每章都有一个或多个聚光灯案例研究,提供详细的、循序渐进的问题分析,并告诉学生如何解决它们。
注贯穿《Python程序设计基础(原书第4版)》,对有趣的或经常被误解的上下文相关的主题进行简短的解释。
提示提供解决不同编程问题的最佳技术。
警告提醒学生注意可能导致程序出现故障或数据丢失的编程技术或实践。
检查点贯穿《Python程序设计基础(原书第4版)》,在学习新主题后快速检查学生的掌握情况。
复习题位于每章末,包括多项选择题、判断题、算法工作室、简答题和编程题。

补充材料
学生在线资源
以下资源可在www.pearsonhighered.com/cs-resources上找到:
每个示例程序的源代码
Python程序设计基础(原书第4版)》的配套视频注释
教师资源
所有复习题的答案
PPT
测试库
致谢
感谢下列评审人员的专业建议:

以前版本的审稿人:

还要感谢家人和朋友对我所有项目的支持。感谢MattGoldstein编辑和KristyAlaura助理编辑的指导和鼓励,感谢营销经理DemetriusHall的辛勤工作,感谢SandraRodriguez领导的生产团队。谢谢大家!

其他推荐