编辑推荐

《学习编程*步零基础上手Python开发》是一本编程启蒙书籍,将为你的编程之旅指明方向,指引你朝着正确的、有用的目标前进。《学习编程第一步 零基础上手Python开发》共分三部分。第I部分介绍如何安装和使用编程工具,讲述Python编程语言的基本元素。第II部分描述如何利用Python编程语言的特点构建复杂的应用程序;指导你设计、测试Python应用程序,并为程序编写文档。第III部分介绍如何使用软件库在图形用户界面中创建应用程序,如何在网络应用中将Python程序用作客户端和服务器。*后创建充满魅力的游戏。即使你没有编程经验,也可在《学习编程第一步 零基础上手Python开发》的指导下编写出解决实际问题的软件。《学习编程*步零基础上手Python开发》完全颠覆了编程入门书籍,紧跟时代,为当今的编程新手提供深入的讲解,令其他书籍望尘莫及。《学习编程第一步 零基础上手Python开发》编排新颖,从“代码分析”“易错之处”“动手练习”到“专家点津”,无不令人耳目一新。无论你是初出茅庐的新手,还是经验丰富的编程人员,《学习编程第一步 零基础上手Python开发》都将赋予你能量、激动和快乐!当你看到其他用户乐于使用你写的程序做一些有用的事情时,你的内心将是十分甜蜜的。

内容简介

学习编程第一步 零基础上手Python开发》介绍了进行Python编程所必须进行的技能,包括:编程基础,从简单的数据存储到复杂和有用的程序;Python如何在VisualStudio环境下工作;一些高级技术,包括类、基于对象的解决方案的设计;使用Python的各种库;构建Web应用和基于云的应用,以及GUI和游戏;测试和调试代码;理解职业开发的方方面面,构建自己的技能库。

主要内容:

■ 获取、安装和使用功能强大的免费工具,来创建新的Python程序

■ 在170个示例程序的引导下讲解关键概念,助你快速上手

■ 探讨程序运行时究竟发生了什么

■ 从专家的视角分析程序开发过程

■ 学习Python程序的核心元素

■ 使用类、方法和对象构建更复杂的软件

■ 合理组织程序,从而可以方便地构建和改进程序

■ 捕获和响应用户输入

■ 存储和操纵现实生活中遇到的多类数据

■ 自定义数据类型来解决特定问题

■ 创建妙趣横生的交互式程序

■ 构建新式的Web和云应用程序

■ 使用预置的库快速构建强大的软件

作者简介

RobMiles在英国赫尔大学讲授编程课程的年限超过30年。他是一位MicrosoftMVP,对编写程序和创造新事物充满热情。即使在空闲时间,也不忘继续编写代码。他喜欢编写代码,然后运行这些代码,看看会有什么结果。他认为编程富有创意,让你可以一探究竟。他相信,编程可以构筑未来。

Rob自诩为一个段子手,但旁人却从未亲耳听到他讲的笑话。如果你想进一步接触和了解Rob,则可访问他的博客www.robmiles.com,或通过@RobMiles在Twitter上找到他。

目录

目录

第Ⅰ部分编程基础知识

第1章开始使用Python3

1.1什么是Python3

1.1.1Python的起源4

1.1.2Python版本4

1.2打造使用Python的场所5

1.2.1获取工具5

1.2.2Python(适用于WindowsPC)6

1.3启动Python8

1.4本章小结11

第2章Python和编程13

2.1编程人员的工作13

2.1.1编程和规划生日聚会13

2.1.2编程和问题14

2.1.3编程人员要善于沟通15

2.2计算机用于处理数据16

2.2.1机器、计算机和人16

2.2.2程序用于处理数据18

2.2.3Python用于处理数据19

2.3数据和信息23

2.4使用Python函数27

2.4.1ord函数27

2.4.2chr函数28

2.4.3使用bin函数探索数据存储29

2.5本章小结30

第3章Python程序结构33

3.1编写首个Python程序33

3.1.1使用IDLE运行Python程序33

3.1.2使用print函数获得程序输出37

3.2使用Python库42

3.2.1random库42

3.2.2time库45

3.3Python注释46

3.4从桌面运行Python47

3.5添加一些snaps函数48

3.5.1添加pygame库48

3.5.2snaps函数49

3.6本章小结52

第4章使用变量55

4.1Python中的变量55

4.2使用文本59

4.2.1标记字符串的开始和结束61

4.2.2文本中的转义字符62

4.2.3使用input函数读取文本63

4.3使用数值65

4.3.1将字符串转换为整型值65

4.3.2整数和实数66

4.3.3实数和浮点数67

4.3.4将字符串转换为浮点值71

4.3.5执行计算72

4.3.6在浮点数和整数之间转换73

4.4snaps函数get_weather_temp75

4.5本章小结76

第5章在程序中制定决策79

5.1布尔数据79

5.1.1创建布尔变量79

5.1.2布尔表达式81

5.1.3比较值83

5.1.4布尔运算86

5.2if结构88

5.2.1嵌套if条件95

5.2.2使用逻辑96

5.3使用决策创建应用程序96

5.3.1设计用户界面97

5.3.2实现用户界面98

5.3.3测试用户输入99

5.3.4完成程序99

5.4导入snaps库100

5.5本章小结103

第6章使用循环执行重复操作105

6.1while结构105

6.1.1使用while重复执行一系列语句105

6.1.2处理无效的用户输入109

6.1.3使用异常检查无效编号输入112

6.1.4异常和编号读取114

6.1.5处理多个异常115

6.1.6跳出循环116

6.1.7使用continue返回到循环顶部117

6.1.8重复循环计数118

6.2for循环结构120

6.3使用snaps制作数字闹钟123

6.4本章小结124

第7章使用函数简化程序125

7.1函数的组成125

7.1.1使用参数给函数提供信息128

7.1.2函数调用的返回值135

7.2构建可重用的函数141

7.2.1创建文本输入函数141

7.2.2为函数添加帮助信息142

7.2.3创建数值输入函数144

7.2.4将函数转换为Python模块147

7.2.5使用IDLE调试器148

7.3本章小结153

第8章存储数据集合155

8.1列表和销售金额跟踪155

8.1.1单独变量的局限性157

8.1.2Python中的列表158

8.1.3在列表中读取值160

8.1.4使用for循环显示列表161

8.2将程序重构为函数162

8.2.1创建占位函数165

8.2.2创建用户菜单165

8.3使用冒泡排序法167

8.3.1使用测试数据初始化列表167

8.3.2按降序排序列表168

8.3.3按升序排序列表172

8.3.4查找最大值和最

小值173

8.3.5计算销售总额和平均销售额174

8.3.6完成程序174

8.4在文件中存储数据175

8.4.1写入文件176

8.4.2写入销售金额179

8.4.3从文件读取180

8.4.4读取销售金额182

8.4.5处理文件错误183

8.5存储数据表185

8.6将列表用作查找表188

8.7元组189

8.8本章小结191

第II部分高级编程

第9章使用类存储数据197

9.1生成TinyContacts应用197

9.1.1生成原型198

9.1.2在不同的列表中存储联系人详细信息200

9.1.3使用类存储联系人详细信息202

9.1.4在TinyContacts程序中使用Contact类205

9.1.5编辑联系人信息207

9.1.6使用pickle将联系人信息保存到文件中215

9.1.7使用pickle从文件加载联系人信息217

9.1.8给TinyContacts程序添加save和load函数218

9.1.9设置类实例219

9.2字典223

9.2.1字典管理225

9.2.2从函数返回字典225

9.2.3使用字典存储联系人信息226

9.3本章小结227

第10章使用类创建活动对象229

10.1创建TimeTracker229

10.1.1为类添加数据特性230

10.1.2创建聚合对象231

10.1.3为类创建方法特性232

10.1.4为方法添加验证代码234

10.1.5防止数据特性受到破坏243

10.1.6受保护的方法246

10.2创建类属性246

10.3扩展类设计250

10.4类中的__str__方法257

10.5TimeTracker中的法庭工作时长跟踪260

10.5.1Pythonmap函数264

10.5.2Pythonjoin方法269

10.6使用snaps制作音乐270

10.7本章小结273

第11章设计面向对象的解决方案277

11.1FashionShop应用程序277

11.1.1应用程序数据设计279

11.1.2面向对象的设计279

11.1.3创建超类和子类282

11.1.4数据设计总结295

11.1.5实现应用程序行为302

11.1.6将对象作为组件305

11.2创建FashionShop组件306

11.3设计类314

11.4Python集合315

11.4.1集合和标签318

11.4.2集合与类层次结构的对比321

11.5本章小结324

第12章Python应用程序327

12.1高级函数327

12.1.1函数引用327

12.1.2使用lambda表达式332

12.1.3迭代器函数和yield语句335

12.1.4使用任意实参数量的函数340

12.2模块和包343

12.2.1Python模块343

12.2.2给BTCInput添加readme函数343

12.2.3将模块作为程序运行344

12.2.4检测模块是否作为程序执行344

12.2.5创建Python包345

12.2.6导入包中的模块347

12.3程序测试350

12.3.1Pythonassert语句351

12.3.2Pythonunittest模块352

12.3.3创建测试355

12.4查看程序文档356

12.5本章小结361

第III部分Python实战

第13章Python和图形用户界面365

13.1VisualStudioCode365

13.1.1安装VisualStudioCode366

13.1.2在VisualStudioCode中安装PythonExtension366

13.1.3创建项目文件夹367

13.1.4创建程序文件368

13.1.5调试程序369

13.1.6其他Python编辑器373

13.2使用Tkinter创建图形用户界面373

13.2.1创建图形应用程序379

13.2.2网格布局380

13.2.3创建事件处理器382

13.2.4创建mainloop383

13.2.5处理GUI中的错误383

13.2.6显示消息框385

13.2.7在画布上绘制388

13.2.8Tkinter事件391

13.2.9创建绘制程序392

13.2.10输入多行文本394

13.2.11在Frame中组合显示元素396

13.2.12使用GUI创建可编辑的StockItem396

13.2.13创建一个Listbox选择器402

13.2.14包含GUI的应用程序408

13.3本章小结410

第14章Python程序用作网络客户端413

14.1计算机网络413

14.2从Python使用Web422

14.2.1读取网页422

14.2.2使用基于Web的数据423

14.3本章小结426

第15章Python程序用作网络服务器429

15.1在Python中创建Web服务器429

15.1.1一台基于套接字的小型服务器429

15.1.2PythonWeb服务器433

15.1.3通过文件支持网页435

15.1.4从Web用户获取信息439

15.2在Web上托管Python应用程序443

15.3本章小结443

第16章使用pygame创建游戏445

16.1开始使用pygame445

16.2使用pygame绘图451

16.2.1图像文件类型451

16.2.2将图像加载到游戏中452

16.2.3使图像能够移动454

16.3从pygame获取用户输入455

16.4创建游戏Sprite457

16.4.1添加玩家Sprite461

16.4.2控制玩家Sprite463

16.4.3添加CrackerSprite464

16.4.4添加大量Sprite实例465

16.4.5捕获薄脆饼干466

16.4.6添加西红柿杀手469

16.5完成游戏472

16.5.1添加启动屏幕472

16.5.2结束游戏475

16.5.3游戏记分476

16.6本章小结477

前言/序言

前言

要对事物一探究竟,编程是最富有创意的活动。为什么这样讲呢?如果你学习绘画,你可以绘出作品。如果你学习拉小提琴,你能演奏出音乐。但如果你学习编程,那将是一番新体验(当然,如果愿意,也可编写代码来绘画或演奏)。一旦踏上编程之旅,你去往哪里将再无限制。新的设备、技术和市场层出不穷,你的编程技能总有用武之地。

《学习编程第一步零基础上手Python开发》是一本编程启蒙书籍,将为你的编程之旅指明方向,指引你朝着正确的、有用的目标前进。通过学习《学习编程第一步零基础上手Python开发》,你将掌握编程技能,并编写出有用的程序。

不过,在出发前,先要声明几个注意点。就像游猎时,导游会向你介绍狮子、老虎和鳄鱼,我要向你透露一点,我们的旅程并非是一帆风顺的。对于如何解决问题,编程人员必须稍微转变一下思路,原因是计算机的工作方式与人类不同。人类可以小心翼翼地完成复杂事情,计算机可极快地完成简单工作。编程人员的职责是利用计算机的简单能力去解决复杂问题;这就是我们要学的内容。编程人员取得成功的关键与其他很多职业是类似的。要成为一位闻名世界的小提琴家,就必须做大量的练习。编程同样如此,只有耗费大量时间处理程序,才能掌握编程技能。当你看到其他用户乐于使用你编写的程序做一些有用的事情时,你的内心将是十分甜蜜的。

《学习编程第一步零基础上手Python开发》的编排方式

《学习编程第一步零基础上手Python开发》共分三部分。后一部分建立在前一部分的基础上,以便循序渐进地引导你成为一名成功的编程人员。首先讲述基本编程指令,这些指令将告知计算机如何完成任务。最后将讲解如何构建专业软件。

第I部分 编程基础知识

第I部分介绍如何安装和使用编程工具,讲述Python编程语言的基本元素。你将学会编写第一个程序,领会所有程序的底层构建方式。你将了解Python在编程语言中的地位和重要性。

第II部分 高级编程

第II部分描述如何利用Python编程语言的特点来构建复杂的应用程序。从中你将了解到,可将大程序分解为多个较小的元素,也可根据要解决的具体问题创建自定义数据类型;你将能设计、测试Python应用程序,并为程序编写文档。

第III部分 Python实战

学会如何自己编写程序后,下一步学习如何使用其他人编写的代码。Python的一个重要优势在于:Python用户可使用大量的软件库。第III部分将介绍其中的很多软件库,并讲述如何使用这些库在图形用户界面中创建应用程序,如何在网络应用中将Python程序用作客户端和服务器。最后将创建充满魅力的游戏。

可将《学习编程第一步零基础上手Python开发》第III部分作为一个可下载的文档,你可在桌面上打开该文档,体验所演示的程序,并自行创建应用程序。

学习《学习编程第一步零基础上手Python开发》的方式

每一章都讲解有关Python编程的新知识,先讲解如何做,然后指导你动手练习并自行创建程序。在这本精心撰写的书籍中,没有哪一页是多余的。不过,你也可根据自己的需要选学。

你可从头到尾阅读《学习编程第一步零基础上手Python开发》,这样,你可慢慢消化更多知识,直至编写能够使用的程序。就像骑自行车一样,从做中学。为此,你必须投入时间,不断练习。《学习编程第一步零基础上手Python开发》将指导你掌握知识,使你信心百倍地着手编程;如果此前你的程序未能如期运行,你也可从《学习编程第一步零基础上手Python开发》中寻找灵感。为此,《学习编程第一步零基础上手Python开发》纳入了以下一些特殊段落。

动手练习

没错,从做中学效果最好。《学习编程第一步 零基础上手Python开发》穿插多个“动手练习”,带你亲手练习编程技能。每个“动手练习”都首先引入一个示例,然后列出一些你可以自己去尝试的步骤。创建的代码能在Windows、MacOS或Linux上运行。

代码分析

学习编程的一种绝佳方式是分析其他人编写的代码,并分析其工作原理,有时需要查明为什么代码不能如期工作。《学习编程第一步零基础上手Python开发》包含150多个可供你分析的示例程序。你将推理论证程序的行为、改正错误,并提供改进建议。

易错之处

如果你此前从未听说过程序会失败,那么在编写你的第一个程序之后,你很快将体验到酸楚。为帮助你处理问题,《学习编程第一步零基础上手Python开发》添加了“易错之处”特殊段落,以推测你可能遇到的问题,并提出解决方案。例如,在介绍新知识点时,总会讨论哪些地方容易出错;在讨论新功能时,总是告诉你一些需要考虑的事项。

专家点津

我讲授编程课程已30年有余,也编写过很多商业程序。我知道,开始时必须掌握一些要点。“专家点津”预先为你呈现这些信息,使你在学习过程中,可以像专业开发人员那样考虑问题。其中涵盖的问题十分广泛,从编程到工作态度,再到哲理。强烈建议你阅读领会这些观点,这样,在未来可节省大量时间!

软件和硬件要求

为练习《学习编程第一步零基础上手Python开发》中的程序,你需要配备一台计算机,并安装一些软件。我恐怕没法给你提供计算机,但在第1章中,你可以了解到从何处获得Python工具和VisualStudioCode应用程序;开始创建更大型的应用程序时,这些都必不可少。

使用PC或笔记本电脑

可使用Windows、MacOS或Linux来创建和运行《学习编程第一步零基础上手Python开发》中的Python程序。对PC硬件的最低要求如下:

●1GHz或主频更高的处理器,最好使用Inteli5或更高性能的处理器。

●至少4GB内存,最好是8GB内存。

●256GB硬件空间(完整安装Python和VisualStudioCode将占用约1GB的硬盘空间)。

对于显卡没有具体要求,但编写程序时,更清晰的屏幕当然会好一些。

移动设备

可在移动设备或平板电脑上编写和运行Python程序。如果有一台运行iOS的Apple设备,建议你使用Pythonista应用。如果使用Android设备,应使用PyonicPython3解释器。

使用RaspberryPi

如果手头缺少资金,开始时可使用最廉价的RaspberryPi(运行Raspbian操作系统),其中内置Python3.6和IDLE开发环境。

源代码下载

《学习编程第一步零基础上手Python开发》每一章都演示和解释程序,以帮助你理解编程机理。你也可在这些程序的基础上自行编写其他程序,可访问https://aka.ms/BeginCodePython/downloads,或扫描《学习编程第一步零基础上手Python开发》封底的二维码,下载《学习编程第一步零基础上手Python开发》的示例代码。

可按第1章的说明来安装示例程序和代码。

致谢

感谢LauraNorman给予我撰写《学习编程第一步零基础上手Python开发》的机会,感谢DanFoster和RickKughen对《学习编程第一步零基础上手Python开发》的整理和编辑,感谢JohnRay富有建设性的精辟技术建议,感谢TraceyCroom、BeckyWinter和RobNance的排版和加工。

最后感谢妻子Mary的支持,你为我沏好一杯又一杯清茶,还为我烘焙软饼,谢谢你的爱。

勘误、更新和相关支持

我们已经尽最大努力,确保《学习编程第一步零基础上手Python开发》的信息正确无误。可访问https://aka.ms/BegintoCodePython/errata来获得《学习编程第一步零基础上手Python开发》的更新信息,其中包括已提交的勘误和相关的更正意见。

如果你发现了未在勘误表中列出的其他错误,也可将其提供给以上网页。

如果需要其他支持,可给MicrosoftPressBookSupport发送电子邮件:mspinput@microsoft.com。

请注意,上述地址不提供Microsoft软件和硬件支持。如果需要获得有关Microsoft软件和硬件的帮助,可访问http://support.microsoft.com。

获得MTA认证

MTA(MicrosoftCertifiedProfessional)计划旨在使你获得技术认证。通过98-381考试“IntroductiontoProgrammingUsingPython”,你将获得MTA的Python编程认证,可通过以下网址了解考试详情:https://www.microsoft.com/en-us/learning/exam-98-381.aspx。

为帮助你尽量通过学习《学习编程第一步零基础上手Python开发》获得MTA认证,这里将考点与《学习编程第一步零基础上手Python开发》素材一一对应列出。注意,考点基于2017年10月公布的考试大纲。

认证结构

将认证划分为多个主题,每个主题都占一定比例。你可以阅读每个主题,并找到与《学习编程第一步零基础上手Python开发》对应的素材。下面的表格列出了对应关系。

1)使用数据类型和运算符执行操作(20%~25%)

该主题与以下几章的关系最密切:第4章描述Python程序的数据处理要点,以及如何操纵和存储文本和数值;第5章介绍布尔变量类型,讲述如何操作逻辑值;第8章描述如何存储数据集合;第9章讲述如何创建和存储数据结构;第11章详述Python程序中的集合。

考点《学习编程第一步零基础上手Python开发》的对应章节

表达式求值,识别Python为每个变量指定的数据类型。识别str、int、float和bool数据类型第4章:Python中的变量第4章:使用文本第4章:使用数值第5章:布尔数据第5章:布尔表达式

(续表)

考点《学习编程第一步零基础上手Python开发》的对应章节

执行数据和数据类型操作。将一种数据类型转换为另一种;构建数据结构;执行索引和切片操作第4章:将字符串转换为浮点值第4章:在浮点数和整数之间转换第4章:实数和浮点数第8章:列表和销售金额跟踪第9章:使用类存储联系人信息

根据运算符的优先级确定执行顺序:赋值运算符(=)、比较运算符、逻辑运算符、算术运算符、身份运算符(is)、成员运算符(in)第4章:执行计算第9章:Contact对象和引用第11章:集合和标记

选择适当的运算符取得预期结果:赋值运算符、比较运算符、逻辑运算符、算术运算符、身份运算符(is)、成员运算符(in)第4章:执行计算第9章:布尔表达式

2)使用决策和循环控制流程(25%~30%)

该主题与以下几章的关系最密切:第5章介绍if结构;第6章讲述用于实现Python程序循环的while和for循环结构。

考点《学习编程第一步零基础上手Python开发》的对应章节

构建和分析使用分支语句的代码段第5章:布尔数据第5章:if结构

if、elif、else、嵌套和复合条件表达式第5章:if结构

构建和分析执行迭代的代码段第6章:while结构第6章:for循环结构

while、for、break、continue、pass、嵌套的循环以及包含复合条件表达式的循环第6章:while结构第6章:for循环结构第8章:使用冒泡排序法

3)执行输入和输出操作(20%~25%)

从第3章和第4章描述的第一个程序开始,《学习编程第一步零基础上手Python开发》穿插介绍如何使用控制台输入和输出函数。第8章简要介绍在Python程序中使用文件存储,第9章进一步介绍如何使用Pythonpickle库将数据结构保存在文件中。第10章详细介绍Python程序中的字符串格式化工具。

考点《学习编程第一步零基础上手Python开发》的对应章节

构建和分析执行文件输入和输出操作的代码段。理解open、close、read、write、append、checkexistence、delete、with语句第8章:在文件中保存数据第9章:使用pickle将联系人信息保存到文件中

(续表)

考点《学习编程第一步零基础上手Python开发》的对应章节

构建和分析执行控制台输入和输出操作的代码段;包括从控制台读取、打印带格式的文本以及使用命令行参数第3章:使用print函数获取程序输出第4章:使用input函数读取文本第10章:设置Python字符串格式

4)代码的文档化和结构(15%~20%)

《学习编程第一步零基础上手Python开发》强调:代码的结构必须清晰,代码必须进行文档化。第3章简要介绍Python注释,第5章强调良好代码布局的重要性。第7章讲述通过Python函数完善程序结构,并描述如何给函数添加文档,作为程序的自我说明。

考点《学习编程第一步零基础上手Python开发》的对应章节

使用注释和文档字符串实现代码段的文档化。使用缩进、空白、注释和文档字符串;使用pydoc生成文档第3章:Python注释第5章:缩进文本可导致大问题第7章:为函数添加帮助信息第12章:查看程序文档

构建和分析包含函数定义的代码段:调用签名、默认值、return、def、pass第7章:函数的组成

5)故障排除和错误处理(5%~10%)

第3章介绍Python代码中的语法错误。第4章描述数据处理中的运行时错误。第6章和第7章讨论应用程序开发环境中产生逻辑错误的原因和后果。第6章和第10章讲述Python程序如何抛出和管理异常。第12章讲述在Python程序测试中使用单元测试。

考点《学习编程第一步零基础上手Python开发》的对应章节

分析、检测和纠正包含以下错误的代码段:语法错误、逻辑错误、运行时错误第3章:不完整的程序第4章:输入错误和测试第5章:相等和浮点值第6章:看似正确的循环出错了第7章:使用调试器探究程序第12章:程序测试

分析和构建用于处理异常的代码段:try、except、else、finally、raise第6章:使用异常检测无效编号输入第10章:抛出异常指示错误

6)使用模块和工具执行操作(1%~5%)

《学习编程第一步零基础上手Python开发》使用的很多Python模块都以random和time模块开头。第13章使用random库的函数来创建random工件,第16章的时间跟踪应用程序使用time库的函数。

考点《学习编程第一步零基础上手Python开发》的对应章节

使用内置模块执行基本操作:math、datetime、io、sys、os、os.path、random第3章:random库第3章:time库

使用内置模块解决复杂计算问题:math、datetime、random第10章:TimeTracker中的会话跟踪第16章:生成工件

联系我们

MicrosoftPress将“让读者满意”奉为至高无上的宗旨,你的反馈是我们最宝贵的资产。请通过https://aka.ms/tellpress将你对《学习编程第一步零基础上手Python开发》的意见发给我们。

为节省时间,其中只有几个简短问题。你的回答将直接反馈到MicrosoftPress(不需要提供个人信息)。

提前谢谢你的反馈!

另外,你可通过Twitter(http://twitter.com/MicrosoftPress)与我们交流。


其他推荐