书名:Python编程从入门到精通
ISBN:978-7-115-47880-1
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
编 著 叶维忠
责任编辑 张 涛
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书循序渐进、由浅入深地详细讲解了Python语言开发技术,并通过具体实例演练了各个知识点的具体使用流程。全书共23章,其中第1~2章是基础知识部分,讲解了Python语言开发的基础知识,包括搭建开发环境和基础语法介绍;第3~9章是核心技术部分,分别讲解了简单数据类型,运算符和表达式,条件语句,循环语句,使用列表,使用元组、字典和集合,使用函数等知识,这些内容都是Python语言中最重要的语法知识;第10~15章是知识进阶部分,分别讲解了面向对象(上)、面向对象(下)、文件操作处理、异常处理、正则表达式、多线程开发知识,这部分内容是Python语言开发技术的重点和核心;第16~22章是典型应用部分,分别讲解了Tkinter图形化界面开发、网络编程、数据库开发、Python动态Web开发基础、使用Pygame开发游戏、使用Pillow库处理图形、使用Matplotlib实现数据挖掘等知识,这部分内容是读者学习并实践Python开发技术的核心;第23章是综合实战部分,通过综合实例的实现过程,介绍了Python语言在综合项目中的使用流程。全书内容循序渐进,以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握Python语言。
本书不仅适用Python语言的初学者,也适合有一定Python语言基础的读者学习,还可以作为高等院校相关专业的教学用书和培训学校的教材。
从你开始学习编程的那一刻起,就注定了以后所要走的路—从编程学习者开始,依次经历实习生、程序员、软件工程师、架构师、CTO等职位的磨砺;当你站在职位顶峰的位置蓦然回首时,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码、寻找并解决Bug、不停测试程序和修改项目的经历。不可否认的是,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获。
对于一名程序开发初学者来说,究竟如何学习才能提高自己的开发技术呢?答案之一就是买合适的书籍进行学习。但是,市面上许多面向初学者的编程书籍中的大多数篇幅都是基础知识讲解,多偏向于理论,读者读了以后面对实战项目时还是无从下手。如何实现从理论平滑过渡到项目实战,是初学者迫切需要解决的难题,为此,特意编写了本书。
本书用一本书的容量讲解了入门类、范例类和项目实战类3类图书的知识,并且对实战知识不是点到为止地讲解,而是深入地探讨。用“纸质书+视频和源程序+网络答疑”的方式,实现了“入门+范例演练+项目实战”的完美呈现,帮助读者从入门顺利过渡到适应项目实战的角色。
1.以“从入门到精通”的写作方法构建内容,让读者入门容易
为了使读者能够完全看懂本书的内容,本书遵循“从入门到精通”基础类图书的写法,循序渐进地讲解这门开发语言的基本知识。
2.破解语言难点,“技术解惑”贯穿全书,绕过学习中的陷阱
本书不采用编程语言知识点的罗列式讲解,为了帮助读者学懂基本知识点,书中有“技术解惑”板块,让读者知其然又知其所以然,也就是看得明白,学得通。
3.全书有950多个示例,几乎和“实例大全”类图书同数量级
书中一共有950多个示例,其中320多个正文实例,一个综合实例。每一个正文实例基本上都穿插加入了与知识点相关的范例,全书额外包含了630多个范例。通过对这些实例及范例的练习,实现了对知识点的横向切入和纵向比较,让读者有更多的实践演练机会,并且可以从不同的角度展现一个知识点的用法,真正达到举一反三的效果。
4.售后QQ群提供答疑服务,帮助读者快速解决学习问题
无论书中的疑惑,还是在学习中的问题,作者都将在第一时间为读者解答问题。
5.视频讲解,降低学习难度
书中每一章均提供声、图并茂的教学视频,这些视频能够引导初学者快速入门,增强学习的信心,从而快速理解所学知识。
6.贴心提示和注意事项提醒
本书根据需要在文中安排了很多“注意”小板块,让读者可以在学习过程中更轻松地理解相关知识点及概念,更快地掌握个别技术的应用技巧。
7.源程序+视频+PPT丰富的学习资料,让学习更轻松
因为本书的内容非常多,不可能用一本书的篇幅囊括“基础+范例+项目案例”的内容,所以需要配备学习资源来辅助实现。在本书的学习资源中不但有全书的源代码,而且还精心制作了实例讲解视频、知识点讲解视频等。本书配套的PPT资料可以在网站下载(www.toppr.net)。读者可以扫描书中提供的二维码观看视频。
8.QQ群+网站论坛实现教学互动,形成互帮互学的朋友圈
本书作者为了方便给读者答疑,特提供了网站论坛、QQ群等技术支持,并且随时在线与读者互动。让大家在互学互帮中形成一个良好的学习编程的氛围。
本书的学习论坛网址是:www.toppr.net。
本书的QQ群是:292693408。
本书的最大特色是实现了入门知识、实例演示、范例演练、技术解惑、综合实战5大部分内容的融合。内容由以下模块构成。
① 入门知识:循序渐进地讲解Python语言开发的基本知识点。
② 实例演示:遵循理论加实践的教学模式,用320多个实例演示了各个入门知识点的用法。
③ 范例演练:为了加深对知识点的融会贯通,每个实例基本上配备了拓展范例,全书共计630多个拓展范例,多角度演示了各个入门知识点的用法和技巧。
④ 技术解惑:把读者容易混淆的部分单独用一个板块进行讲解和剖析,对读者所学的知识实现了“拔高”处理。
下面以本书第4章为例,展示内容版式的具体结构。
初学编程的自学者 编程爱好者
大中专院校的教师和学生 相关培训机构的教师和学员
做毕业设计的学生 初、中级程序开发人员
软件测试人员 参加实习的初级程序员
在职程序员
本书全部源程序请在人民邮电出版社网站(www.ptpress.com.cn)下载,在网站中搜索本书名,在弹出的页面中单击“资源下载”链接即可下载。
本书在编写过程中,得到了人民邮电出版社编辑的大力支持,正是各位编辑的求实、耐心和效率,才使得本书能够在这么短的时间内出版。另外,也十分感谢我的家人给予的巨大支持。本人水平毕竟有限,书中纰漏之处在所难免,诚请读者提出意见或建议,以便修订并使之更臻完善。编辑和投稿联系邮箱:zhangtao@ptpress.com.cn。
最后感谢您购买本书,希望本书能成为您编程路上的领航者,祝您阅读快乐!
作者
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
本书提供如下资源:
本书源代码;
本书的视频文件。
要获得以上配套资源,请在异步社区本书页面中点击 ,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
如果您是教师,希望获得教学配套资源,请在社区本书页面中直接联系本书的责任编辑。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。
如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
(视频讲解:47min)
在时间进入2018年后,身边越来越多的人说Python语言如日中天了,也有人说Python的发展速度像坐了火箭一般。究竟Python语言有什么神奇之处,让广大程序员们对它如痴如醉?本章将详细介绍Python语言的发展历程和特点,和读者一起找到上述问题的答案。
扫码看视频:Python语言基础
曾经风靡一时的热播剧《琅琊榜》有云:遥映人间冰雪样,暗香幽浮曲临江,遍识天下英雄路,俯首江左有梅郎……琅琊榜就和武侠小说中的高手排行榜差不多。其实在编程语言中也有自己的“琅琊榜”,这就是TIOBE编程语言社区排行榜,榜单会每月更新一次,榜单的排名客观公正地展示了各门编程语言的地位。
TIOBE编程语言社区排名使用著名的搜索引擎(诸如Google、MSN、Yahoo!、Wikipedia、YouTube以及Baidu等)进行计算,在2017年上半年,Java语言和C语言依然是最大的赢家。其实在最近几年的榜单中,程序员们早已习惯了C语言和Java的“二人转”局面。表1-1是2017年12月榜单中的前几名排名信息。
表1-1 2017年12月编程语言使用率统计表
2017年12月排名 |
语 言 |
2017年占有率(%) |
---|---|---|
1 |
Java |
20.973 |
2 |
C |
16.460 |
3 |
C++ |
5.797 |
4 |
Python |
3.775 |
5 |
JavaScript |
2.751 |
注意:
TIOBE编程语言社区排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。
相信TIOBE编程语言社区排行榜中的排名会出乎很多读者的意料,Python语言竟然排在PHP、JavaScript等众多常用开发语言的前面。这似乎不合乎常理,因为在印象中很少有人提及Python,反而经常听大家谈起C、C++、Java、C#和PHP,Python语言为什么这么火呢?笔者认为Python语言之所以如此受大家欢迎,主要有如下两个原因。
(1)简单。
无论是对于广大学习者还是程序员,简单就拥有了最大的吸引力。既然都能实现同样的功能,人们有什么理由不去选择更加简单的开发语言呢?例如,在运行Python程序时,只需要简单地输入Python代码后即可运行,而不需要像其他语言(例如C或C++)那样需要经过编译和链接等中间步骤。Python可以立即执行程序,这样便形成了一种交互式编程体验和不同情况下快速调整的能力,往往在修改代码后能立即看到程序改变后的效果。
(2)功能强大。
Python语言可以用来作为批处理语言,写一些简单工具,处理一些数据,作为其他软件的接口调试等。Python语言可以用来作为函数语言,进行人工智能程序的开发,具有Lisp语言的大部分功能。Python语言可以用来作为过程语言,进行常见的应用程序开发,可以和VB等语言一样应用。Python语言可以用来作为面向对象语言,具有大部分面向对象语言的特性,经常作为大型应用软件的原型开发语言,然后再用C++语言改写,而有些应用软件则直接使用Python来开发。
除了上一小节介绍的简单和功能强大外,Python语言还有如下特点。
(1)面向对象。
Python是一门面向对象编程(面向对象编程缩写为“OOP”)的语言,它的类模块支持多态、操作符重载和多重继承等高级概念,并且以Python特有的简洁的语法和类型,面向对象十分易于使用。除了作为一种强大的代码构建和重用手段以外,Python的面向对象特性使它成为面向对象语言(如C++和Java)的理想脚本工具。例如,通过适当地粘贴代码,Python程序可以对C++、Java和C#的类进行子类的定制。
(2)免费。
Python的使用和分发是完全免费的,就像其他的开源软件一样,如Perl、Linux和Apache。开发者可以从Internet上免费获得Python的源代码。复制Python,将其嵌入你的系统或者随产品一起发布都没有任何限制。
(3)可移植。
Python语言的标准实现是由可移植的ANSI C编写的,可以在目前所有的主流平台上编译和运行。现在从PDA到超级计算机,到处都可以见到Python程序的运行。Python语言可以在下列平台上运行(注意,这并不是全部,而仅仅是笔者所知道的一部分)。
(4)混合开发。
Python程序可以以多种方式轻易地与其他语言编写的组件融合在一起。例如,通过使用Python的C语言API可以帮助Python程序灵活地调用C程序。这意味着可以根据需要给Python 程序添加功能,或者在其他环境系统中使用Python。例如,将Python与C或者C++写成的库文件混合起来,使Python成为一个前端语言和定制工具,这使Python成为一个很好的快速原型工具。出于开发速度的考虑,系统可以先使用Python实现,之后转移至C,这样可以根据不同时期性能的需要逐步实现系统。
扫码看视频:安装Python
古人云:工欲善其事,必先利其器。在使用Python语言进行项目开发时,需要先搭建其开发环境。本节将首先详细讲解安装Python的知识,为读者步入本书后面知识的学习打下基础。
因为Python语言是跨平台的,可以运行在Windows、Mac OS、Linux、UNIX和各种其他系统上,所以说Python可以安装在这些系统中。并且在Windows上写的Python程序,可以放到Linux系统上运行。
到目前为止,Python最为常用的版本有两个:一个是2.x版,一个是3.x版。这两个版本是不兼容的,因为目前Python正在朝着3.x版本进化,在进化过程中,大量针对2.x版本的代码要修改后才能运行,所以,目前有许多第三方库还暂时无法在3.x版本上使用。读者可以根据自己的需要选择进行下载和安装,本书将以Python 3.x版本语法和标准库进行讲解。
因为Python可以在Windows、Linux和Mac这当今三大主流的计算机系统中运行,所以本书将详细讲解在这3种操作系统中安装Python的方法。接下来,将首先讲解在Windows系统中下载并安装Python的过程。
(1)登录Python官方网站,单击顶部导航中的Downloads链接,出现如图1-1所示的下载页面。
图1-1 Python下载页面
(2)因为当前计算机的系统是Windows系统,所以单击“Looking for Python with a different OS? Python for”后面的Windows链接,出现如图1-2所示的Windows版下载界面。
图1-2 Windows版下载界面
图1-2所示的都是Windows系统平台的安装包,其中x86适合32位操作系统,x86-64适合64位操作系统。并且可以通过如下3种途径获取Python。
(3)因为笔者的计算机是64位操作系统,所以需要选择一个64位的安装包,当前(笔者写稿时)最新版本“Windows x86-64 executable installer”。在如图1-3所示的下载对话框中,单击“下载”按钮后开始下载。
图1-3 下载对话框界面
(4)下载成功后得到一个“.exe”格式的可执行文件,双击此文件开始安装。在第一个安装界面中勾选下面两个复选框,然后单击Install Now按钮,如图1-4所示。
图1-4 第一个安装界面
注意:
勾选Add Python 3.6 to PATH复选框的目的是把Python的安装路径添加到系统路径下面,勾选这个选项后,以后在执行cmd命令时,输入python后就会调用python.exe。如果不勾选这个选项,在cmd下输入python时会报错。
(5)弹出如图1-5所示的安装进度对话框进行安装。
图1-5 安装进度对话框
(6)安装完成后的界面如图1-6所示,单击“Close”按钮完成安装。
图1-6 安装完成界面
(7)依次单击“开始”“运行”,输入cmd后打开DOS命令界面,然后输入“python”验证是否安装成功。弹出如图1-7所示的界面表示安装成功。
图1-7 表示安装成功
在Mac OS X中都已经默认安装了Python,开发者只需要安装一个文本编辑器来编写Python程序即可,并且需要确保其配置信息正确无误。要想检查当前使用的苹果系统是否安装了Python,需要完成如下工作。
(1)打开终端窗口(和Windows系统中的cmd控制台类似)。
打开“Applications/Utilities”文件夹,选择打开里面的Terminal,这样可以打开一个终端窗口。另外,也可以按下键盘中的“Command + 空格”组合键,再输入terminal并按回车键打开终端窗口。
(2)输入“python”命令。
为了确定是否安装了Python,接下来,需要执行命令“python”(注意,其中的p是小写的)。如果输出了类似于下面的内容,指出了安装的Python版本,这表示Python已经安装成功。最后的“>>>”是一个提示符,让我们能够进一步输入Python命令。
$ python
Python 3.6.1 (default, Mar 9 2016, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits", or "license" for more information.
>>>
上述输出表明,当前计算机默认使用的Python版本为Python 3.6.1。看到上述输出后,如果要退出Python并返回终端窗口,可按Control + D组合键或执行命令exit()。
在众多开发者的眼中,Linux系统是专门为开发者所设计的。在大多数的Linux计算机中,都已经默认安装了Python。要在Linux系统中编写Python程序,开发者几乎不用安装什么软件,也几乎不用修改设置。要想检查当前使用的Linux系统是否安装了Python,需要完成如下工作。
(1)在系统中运行应用程序Terminal(如果使用的是Ubuntu,可以按下Ctrl + Alt + T组合键),打开一个终端窗口。
(2)为了确定是否安装了Python,需要执行“python”命令(请注意,其中的p是小写的)。如果输出类似下面这样输出安装版本的结果,则表示已经安装了Python;最后的“>>>”是一个提示符,让我们能够继续输入Python命令。
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
上述输出表明,当前计算机默认使用的Python版本为Python 2.7.6。看到上述输出后,如果要退出Python并返回终端窗口,可按Ctrl + D组合键或执行命令exit()。要想检查系统是否安装了Python 3,可能需要指定相应的版本,例如尝试执行命令python3。
$ python3
Python 3.6.0 (default, Sep 17 2016, 13:05:18)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
上述输出表明,在当前Linux系统中也安装了Python 3,所以开发者可以使用这两个版本中的任何一个。在这种情况下,需要将本书中的命令python都替换为python3。在大多数情况下,在Linux系统上都默认安装了Python。
扫码看视频:Python开发工具介绍
在安装Python后,接下来需要选择一款开发工具来编写Python程序。市面中有很多种支持Python的开发工具,下面将简要介绍几种主流的开发工具。
IDLE是Python自带的开发工具,它是应用Python第三方库的图形接口库Tkinter开发的一个图形界面的开发工具,其主要特点如下所示。
当在Windows系统下安装Python时,会自动安装IDLE,在“开始”菜单的Python 3.x子菜单中就可以找到它,如图1-8所示。
图1-8 “开始”菜单中的IDLE
在Linux系统下需要使用yum或apt-get命令进行单独安装。在Windows系统下,IDLE的界面如图1-9所示,标题栏与普通的Windows应用程序相同,而其中所写的代码是自动着色的。
图1-9 IDLE的界面
IDLE常用的快捷键如表1-2所示。
表1-2 IDLE常用快捷键
快 捷 键 |
功 能 |
---|---|
Ctrl+] |
缩进代码 |
Ctrl+[ |
取消缩进 |
Alt+3 |
注释代码 |
Alt+4 |
去除注释 |
F5 |
运行代码 |
Ctrl+Z |
撤销一步 |
Emacs堪称“无所不能”的开发工具,很多人称之为最强大的文本编辑器。与Vim不同,Emacs没有模式编辑器,使用Emacs就像使用Windows的记事本一样,但Emacs比Windows的记事本的功能要强大得多。下载并安装Emacs工具的具体流程如下所示。
(1)登录gnu官方网站,在Windows栏目下单击main GNU FTP server链接,如图1-10所示。
图1-10 单击main GNU FTP server链接
(2)在弹出的新页面中选择一个版本进行下载,如图1-11所示。
图1-11 选择一个版本
(3)下载完成后将得到一个ZIP格式的压缩包,解压完成后,运行Emacs所在目录下bin目录中的runemacs.exe文件,即可启动Emacs工具,其界面如图1-12所示。
图1-12 运行Emacs后的界面
Emacs中的常用命令如表1-3所示。
表1-3 Emacs中的常用命令
命 令 |
功 能 |
---|---|
C-v |
向后翻一页 |
M-v |
向前翻一页 |
C-1 |
将当前行居中 |
C-f |
向前移动一个字符 |
M-f |
向前移动一个单词 |
C-b |
向后移动一个字符 |
M-b |
向后移动一个单词 |
C-n |
向下移动一行 |
C-p |
向上移动一行 |
C-a |
移至当前行的第一个字符 |
M-a |
移至当前所在句子的第一个字符 |
C-e |
移至当前行的最后一个字符 |
M-e |
移至当前所在句子的最后一个字符 |
M-< |
移动到当前窗口的第一个字符 |
M-> |
移动到当前窗口的最后一个字符 |
C-x C-c |
永久离开Emacs |
C-x C-f |
读取文件到Emacs |
C-x r |
以只读方式打开一个文件 |
C-x C-q |
清除一个窗口的只读属性 |
C-x C-s |
保存文件到磁盘中 |
C-x s |
保存所有文件 |
C-x i |
插入其他文件的内容到当前缓冲区中 |
C-x C-v |
用将要读取的文件替换当前文件 |
C-x C-w |
向当前缓冲区中写入指定的文件 |
C-s |
向前查找 |
C-r |
向后查找 |
C-M-s |
正则表达式查找 |
C-M-r |
反向正则表达式查找 |
M-p |
选择前一个查找字符串 |
M-n |
选择下一个查找字符串 |
C-d |
向前删除字符 |
M-d |
向前删除到字首 |
M-DEL |
向后删除到字尾 |
M-O C-k |
向前删除到行首 |
C-k |
向后删除到行尾 |
C-x DEL |
向前删除到句首 |
M-k |
向后删除到句尾 |
M--C-M-k |
向前删除到表达式首部 |
C-M-k |
向后删除到表达式尾部 |
C-x r r |
复制一个矩形到寄存器 |
C-x r k |
删除矩形 |
C-x r V |
插入刚刚删除的矩形 |
C-x r o |
打开一个矩形,将文本移动至右边 |
C-x r c |
清空矩形 |
C-x r t |
为矩形中每一行加上一个字符串前缀 |
C~x r i r |
在r缓冲区内插入一个矩形 |
C-x l |
删除所有其他窗口 |
C-x 2 |
上下分割当前窗口 |
C-x 3 |
左右分割当前窗口 |
C-x 0 |
删除当前窗口 |
C-M-v |
滚动其他窗口 |
C-x O |
切换光标到另一个窗口 |
C-x ^ |
增加窗口高度 |
C-x { |
减小窗口宽度 |
C-x } |
增加窗口宽度 |
扫码看视频:认识第一段Python程序
经过本章前面内容的学习,已经了解了安装并搭建Python开发环境的知识。在下面的内容中,将通过一段具体代码初步了解Python程序的基本知识。
(1)打开IDLE,依次单击File→New File,在弹出的新建文件中输入如下所示的代码。
print('同学们好,我的名字是——Python!')
print('这就是我的代码,简单吗?')
拓展范例及视频二维码!
范例001:输出欢迎学习Python!
源码路径:范例\001\
范例002:输出连接的文本
源码路径:范例\002\
在Python语言中,“print”是一个输出函数,功能是,在命令行界面输出指定的内容,和C语言中的“printf”函数、Java语言中的“println”函数类似。本实例在IDLE编辑器中的效果如图1-13所示。
图1-13 输入代码
(2)依次单击File→Save命令,将其另存为文件“first.py”,如图1-14所示。
图1-14 另存为文件“first.py”
(3)按下键盘中的F5键,或依次单击Run→Run Module命令运行当前代码,如图 1-15所示。
(4)本实例执行后会使用函数print()输出两行文本,执行后的效果如图1-16所示。
图1-15 运行当前代码
图1-16 执行效果
在Windows系统下还可以直接使用鼠标双击的方式来运行Python程序。如果通过双击运行上面编写的程序文件“first.py”,可以看到一个命令行窗口首先出现,然后又关闭,由于很快,因此看不到输出内容,这是因为程序运行结束后立即退出了。为了能看到程序的输出内容,可以按以下步骤进行操作。
(1)单击“开始”菜单,在“搜索程序和文件”文本框中输入“cmd”,并按Enter键,打开Windows的命令行窗口。
(2)输入文件first.py的绝对路径及文件名,再按Enter键运行程序。也可以使用cd命令,进入文件“first.py”所在的目录,如“D:\lx”,然后在命令行提示符下输入“first.py”或者“python first.py”,按Enter键即可运行。
注意:
在Linux系统中,在Terminal终端的命令提示符下可以使用python first.py命令来运行Python程序。
Python程序的交互式运行方式是指一边输入程序,一边运行程序。具体操作步骤如下所示。
(1)打开IDLE,在命令行中输入如下所示的代码。
print('同学们好,我的名字是——Python!')
按Enter键后即可立即运行上述代码,执行效果如图1-17所示。
图1-17 执行效果
(2)继续输入如下所示的代码。
print('这就是我的代码,简单吗?')
按Enter键后即可立即运行上述代码,执行效果如图1-18所示。
图1-18 执行效果
注意:
在Linux中,也可以通过在Terminal终端的命令提示符下运行命令python,来启动Python的交互式运行环境,从而边输入程序边运行程序。
Geany是一款简单的文本编辑器:它易于安装;让你能够直接运行几乎所有的程序(而无需通过终端来运行);使用不同的颜色来显示代码,以突出代码语法;在终端窗口中运行代码,让你能够习惯使用终端。建议使用Geany,除非你有充分的理由不这样做。
在大多数Linux系统中,都只须执行一条命令就可以安装Geany。
$ sudo apt-get install geany
为了编写第一个Python程序,需要启动Geany。为此,可以按超级(Super)键(俗称Windows键),并在系统中搜索Geany。找到Geany后,双击就可以启动它。再将其拖曳到任务栏或桌面上,以创建一个快捷方式。接下来,创建一个用于存储项目的文件夹,并将其命名为python_work(在文件名和文件夹名中,最好使用小写字母,并使用下划线来表示空格,因为这是Python采用的命名约定)。返回Geany,依次选择菜单“File”和“Save As”,将当前的空Python文件保存到文件夹“python_work”中,并将其命名为“hello_world.py”。扩展名“.py”告诉Geany文件包含的是Python程序。它还让Geany知道如何运行该程序,并以有益的方式突出其中的代码。
保存文件后,在其中输入如下所示的一行代码。
print("Hello Python world!")
如果在系统中安装了多个Python版本,就必须对Geany进行配置,使其使用正确的版本。为此,可以依次选择菜单Build(生成)和 Set Build Commands(设置生成命令),此时将看到文字Compile(编译)和Execute(执行),它们旁边都有一个命令。在默认情况下,这两条命令都是python,要让Geany使用命令python3,必须做相应的修改。
如果在终端会话中能够执行命令python3,请修改编译命令和执行命令,让Geany使用Python 3解释器。为此,将编译命令修改成下面这样。
python3 -m py_compile "%f"
必须完全按上面的代码显示的那样输入这条命令,确保空格和大小写都完全相同。
将执行命令修改成下面这样。
python3 "%f"
同样,务必确保空格和大小写都完全与显示的相同。图1-19显示了该如何在Geany中配置这些命令。
现在开始运行程序hello_world.py,依次选择菜单Build和Execute,并单击Execute图标(两个齿轮)或按F5键后将弹出一个终端窗口,其中包含如下所示的输出。
Hello Python world!
------------------
(program exited with code: 0)
Press return to continue
如果没有看到这样的输出,请检查你输入的每个字符。你是不是将print的首字母大写了?是不是遗漏了引号或括号?编程语言对语法的要求非常严格,只要你没有严格遵守语法,就会出错。
图1-19 在Linux中配置Geany,使其使用Python 3
开发者可以打开一个终端窗口并执行命令python或python3,再尝试运行Python代码段。在检查Python版本时,你就这样做过。下面再次这样做,但是会在终端会话中输入如下代码行:
>>> print("Hello Python interpreter!")
Hello Python interpreter!
>>>
消息将直接转出到当前终端窗口中。请不要忘记,要关闭Python解释器,需要按Ctrl + D组合键或执行命令exit()。
(1)尝试在Windows系统下安装微软的Visual Studio 2017。
(2)尝试安装并使用集成开发环境PyCharm。
(视频讲解:67min)
在本书上一章的内容中,我们学习了实现条件判断功能的条件语句,让程序的执行顺序发生了变化。为了满足循环和跳转等功能,本章将详细讲解Python语言中循环语句的知识,主要包括for循环语句、while循环和循环控制语句。在讲解过程中通过具体实例的实现过程讲解了各个知识点的具体用法,为读者步入本书后面知识的学习打下基础。
扫码看视频:使用for循环语句
在Python语言中,循环语句是一种十分重要的程序结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。循环结构还如大家在操场跑步,例如每天跑8000m,你就得在操场400m跑道上跑20圈,这20圈的路线是相同的、重复的,这20圈的跑步动作就是一个循环。在Python程序中主要有3种循环语句,分别是for循环语句、while循环语句和循环控制语句。下面将首先讲解for循环语句的知识。
在Python语言中,for语句是Python语言中构造循环结构程序的语句之一。在Python程序中,绝大多数的循环结构都是用for语句来完成的。和Java、C语言等其他语言相比,Python语言中的for语句有很大的不同,其他高级语言中的for语句需要用循环控制变量来控制循环。而Python语言中的for循环语句通过循环遍历某一序列对象(例如本书后面将要讲解的元组、列表、字典等)来构建循环,循环结束的条件就是对象遍历完成。
在Python程序中,使用for循环语句的基本语法格式如下所示。
for iterating_var in sequence:
statements
在上述格式中,各个参数的具体说明如下所示。
上述for循环语句的执行流程如图6-1所示。
图6-1 执行流程图
上述格式的含义是遍历for语句中的遍历对象,每经过一次循环,循环变量就会得到遍历对象中的一个值,可以在循环体中处理它。在一般情况下,当遍历对象中的值全部用完时,就会自动退出循环。
下面的实例演示了使用 for 循环语句的基本过程。
实例文件for.py的具体实现代码如下所示。
for letter in 'Python': #第一个实例,定义一个字符
print ('当前字母 :', letter)
#循环输出字符串“Python”中的各个字母
fruits = ['banana', 'apple', 'mango']
#定义一个列表
for fruit in fruits:
print ('当前单词 :', fruit)
#循环输出列表“fruits”中的3个值
print ("Good bye!")
拓展范例及视频二维码!
范例057:遍历列表中的数据
源码路径:范例\057\
范例058:遍历字典中的数据
源码路径:范例\058\
执行效果如图6-2所示。
图6-2 执行效果
在Python语言中,还可以通过序列索引迭代的方式实现循环功能。在具体实现时,可以借助于内置函数range()实现。因为在Python语言的for语句中,对象集合可以是列表、字典以及元组等,所以可以通过函数range()产生一个整数列表,这样可以完成计数循环功能。
在Python语言中,函数range()的语法格式如下所示。
range( [start,] stop[, step])
各个参数的具体含义如下所示。
注意:产生的整数序列的最大值为stop−1。
下面的实例通过序列索引迭代的方式循环输出了列表中的元素。
实例文件diedai.py的具体实现代码如下所示。
fruits = ['banana', 'apple', 'mango']
#定义一个数组
for index in range(len(fruits)):
#使用函数range()遍历数组
print ('当前水果 :', fruits[index])
#输出遍历数组后的结果
print ("Good bye!")
拓展范例及视频二维码!
范例059:构建两个循环语句
源码路径:范例\059\
范例060:获取两个整数之间的素数
源码路径:范例\060\
执行后的效果如图6-3所示。
图6-3 执行效果
在Python程序中,for…else表示的意思是:for中的语句和普通的语句没有区别,else中的语句会在循环正常执行完(即for不是通过break跳出而中断的)的情况下执行。使用for…else循环语句的语法格式如下所示。
for iterating_var in sequence:
statements1
else:
statements2
在上述格式中,各个参数的具体说明如下所示。
下面的实例演示了使用for… else循环语句的执行过程。
实例文件else.py的具体实现代码如下所示。
for num in range(10,20):
#循环迭代10 到 20 之间的数字
for i in range(2,num): #根据因子迭代
if num%i == 0: #确定第一个因子
j=num/i #计算第二个因子
print ('%d 等于 %d * %d' % (num,i,j))
break # 跳出当前循环
else:
# 如果上面的条件不成立,则执行循环中的else部分
print (num, '是一个质数') #输出这是一个质数
拓展范例及视频二维码!
范例061:输出列表的长度
源码路径:范例\061\
范例062:遍历一个字符串
源码路径:范例\062\
执行后的效果如图6-4所示。
图6-4 执行效果
当在Python程序中使用for循环语句时,可以是嵌套的。也就是说,可以在一个for语句中使用另外一个for语句。例如在前面的实例6-3中使用了嵌套循环,即在for循环中又使用了一个for循环。使用for循环语句的形式如下所示。
for iterating_var in sequence:
for iterating_var in sequence:
statements
statements
上述各参数的含义与前面非嵌套格式的参数一致。
下面实例使用嵌套for循环语句获取两个整数之间的所有素数。
实例文件qiantao.py的具体实现代码如下所示。
#提示输入一个整数
x = (int(input("请输入一个整数值作为开始:")),int(input
("请输入一个整数值作为结尾:")))
x1 = min(x) #获取输入的第1个整数
x2 = max(x) #获取输入的第2个整数
for n in range(x1,x2+1):
#使用外循环语句生成要判断素数的序列
for i in range(2,n-1):
#使用内循环生成测试的因子
if n % i == 0:
#如果生成测试的因子能够整除,则不是素数
break
else: #上述条件不成立,则说明是素数
print("你输入的",n,"是素数。")
拓展范例及视频二维码!
范例063:遍历一个元组
源码路径:范例\063\
范例064:字典迭代器
源码路径:范例\064\
在上述代码中,首先使用输入函数获取用户指定的序列开始和结束,然后使用for语句构建了两层嵌套的循环语句用来获取素数并输出结果。使用外循环语句生成要判断素数的序列,使用内层循环生成测试的因子。并且使用else子句的缩进来表示它属于内嵌的for循环语句,如果多缩进一个单位,则表示属于其中的if语句;如果少缩进一个单位,则表示属于外层的for循环语句。因此,Python中的缩进是整个程序的重要构成部分。执行后将提示用户输入两个整数作为范围,例如分别输入“100”和“105”后的执行效果如图6-5所示。
图6-5 执行效果
注意:
C/C++/Java/C#程序员需要注意如下两点。
- Python语言的for循环完全不同于C/C++的for循环。C#程序员会注意到,在Python中for循环类似于foreach循环。Java程序员会注意到,同样类似于在Java 1.5中的to for (int i : IntArray)。
- 在C/C++中,如果你想写for (int i = 0; i<5; i++),那么在Python中你只要写 for i in range(0,5)。正如你可以看到的,在Python中for循环更简单、更富有表现力且不易出错。
扫码看视频:使用while循环语句
在Python程序中,除了for循环语句以外,while语句也是十分重要的循环语句,其特点和for语句十分类似。接下来将详细讲解使用while循环语句的基本知识。
在Python程序中,while语句用于循环执行某段程序,以处理需要重复处理的相同任务。在Python语言中,虽然绝大多数的循环结构都是用for循环语句来完成的,但是while循环语句也可以完成for语句的功能,只不过不如for循环语句简单明了。
在Python程序中,while循环语句主要用于构建比较特别的循环。while循环语句最大的特点,就是不知道循环多少次使用它,当不知道语句块或者语句需要重复多少次时,使用while语句是最好的选择。当while的表达式是真时,while语句重复执行一条语句或者语句块。使用while语句的基本格式如下所示。
while condition
statements
在上述格式中,当condition为真时将循环执行后面的执行语句,一直到条件为假时再退出循环。如果第一次条件表达式就是假,那么while循环将被忽略;如果条件表达式一直为真,那么while循环将一直执行。也就是说,while循环中的执行语句部分会一直循环执行,直到当条件为假时才退出循环,并执行循环体后面的语句。while循环语句最常用在计数循环中。while循环语句的执行流程如图6-6所示。
图6-6 while循环语句的执行流程图
下面的实例代码演示了使用while循环语句的过程。
实例文件while.py的具体实现代码如下所示。
count = 0 #设置count的初始值为0
while (count < 9):
#如果count小于9则执行下面的while循环
print ('The count is:', count)
count = count + 1 #每次 while循环count值递增1
print ("Good bye!")
拓展范例及视频二维码!
范例065:使用while循环遍历一个列表
源码路径:范例\065\
范例066:显示三个循环
源码路径:范例\066\
执行后的效果如图6-7所示。
图6-7 执行效果
和使用for…else循环语句一样,在Python程序中也可以使用while…else循环语句,具体语法格式如下所示。
while <条件>:
<语句1>
else:
<语句2> #如果循环未被break终止,则执行
在上述语法格式中,与for循环不同的是,while语句只有在测试条件为假时才会停止。在while语句的循环体中一定要包含改变测试条件的语句,以保证循环能够结束,以避免死循环的出现。while语句包含与if语句相同的条件测试语句:如果条件为真,就执行循环体;如果条件为假,则终止循环。while语句也有一个可选的else语句块,它的作用与for循环中的else语句块一样。如果while循环不是由break语句终止的,则会执行else语句块中的语句。而continue语句也可以用于while循环中,其作用是跳过continue后的语句,提前进入下一个循环。
下面的实例代码演示了使用while…else循环语句的过程。
实例文件else.py的具体实现代码如下所示。
count = 0 #设置count的初始值为0
while count < 5: #如果count值小于5则执行循环
print (count, "小于5")
#如果count值小于5则输出小于5
count = count + 1 #每次循环,count值加1
else: #如果count值大于等于5
print (count, 大于等于5) #则输出大于等于5
拓展范例及视频二维码!
范例067:一个猜数游戏
源码路径:范例\067\
范例068:袖珍版猜数游戏
源码路径:范例\068\
执行后的效果如图6-8所示。
图6-8 执行效果
死循环也称为无限循环,是指这个循环将一直执行下去。在Python程序中,while循环语句不像for循环语句那样可以遍历某一个对象的集合。在使用while语句构造循环语句时,最容易出现的问题就是测试条件永远为真,导致死循环。因此在使用while循环时应仔细检查while语句的测试条件,避免出现死循环。
下面的实例代码演示了使用while循环语句的死循环问题。
实例文件wuxian.py的具体实现代码如下所示。
var = 1 #设置var的初始值为1
#下面的代码当var为1时执行循环,实际上var的值确实为1
while var == 1 :
#所以该条件永远为true,循环将无限执行下去
num = input("亲,请输入一个整数,谢谢!")**/*
#提示输入一个整数
print ("亲,您输入的是:", num) #显示一个整数
print ("再见,Good bye!")
拓展范例及视频二维码!
范例069:计算100以内的奇数的和
源码路径:范例\069\
范例070:while和while True的效率
源码路径:范例\070\
在上述代码中,因为循环条件变量var的值永远为1,所以该条件永远为true,造成循环无限执行下去,这就形成了死循环。所以执行后将一直提示用户输入一个整数,在用户输入一个整数后还继续无限次数地提示用户输入一个整数,如图6-9所示。
图6-9 无限次数提示用户输入一个整数
使用“Ctrl+C”组合键可以中断上述死循环,中断后的效果如图6-10所示。
图6-10 中断死循环
和使用for循环嵌套语句一样,在Python程序中也可以使用while循环嵌套语句,具体语法格式如下所示。
while expression:
while condition:
statement(s)
statement(s)
另外,还可以在循环体内嵌入其他的循环体,例如在while循环中可以嵌入for循环。反之,也可以在for循环中嵌入while循环。
下面的实例演示了使用while循环嵌套语句的过程。
实例文件qiantao.py的具体实现代码如下所示。
i = 2 #设置i的初始值为2
while(i < 100): #如果i的值小于100则进行循环
j = 2 #设置j的初始值为2
while(j <= (i/j)):
#如果j的值小于等于“i/j”则进行循环
if not(i%j): break
#如果能整除则用break停止运行
j = j + 1 #将j的值加1
if (j > i/j) : print (i, " 是素数")
#如果“j > i/j”则输出i的值
i = i + 1 #循环输出素数i的值
print ("谢谢使用,Good bye!")
拓展范例及视频二维码!
范例071:输出乘法表
源码路径:范例\071\
范例072:输出N以内的所有的质数
源码路径:范例\072\
执行后的效果如图6-11所示。
图6-11 执行效果
扫码看视频:使用循环控制语句
在很多开发语言中,循环控制语句也称为跳转语句,其功能可以更改循环语句执行的顺序。例如在使用循环语句时,有时候不需要再继续循环下去,此时就需要特定的语句来实现跳转功能。在Python程序中,通过跳转语句可以使程序跳转到指定的位置,所以跳转语句常用于项目内的条件转移控制。在Python语言中,循环控制语句有 3种,分别是break、continue和pass。
在Python程序中,break语句的功能是终止循环语句,即使循环条件没有False条件或者序列还没完全递归完,也会停止执行循环语句。break语句通常用在while循环语句和for循环语句中,具体语法格式如下所示。
break
在Python程序中,break语句的执行流程如图 6-12所示。
图6-12 break语句的执行流程
例如在本章前面的实例6-3和实例6-4中用到了break语句。下面的实例分别演示了在for循环语句和while循环语句中使用break语句的过程。
实例文件br1.py的具体实现代码如下所示。
for letter in 'Python':#第1个例子,设置字符串“Python”
if letter == 'h': #如果找到字母“h”
break #则停止遍历
print ('Current Letter :', letter)
#显示遍历的字母
var = 10 #第2个例子,设置var的初始值是10
while var > 0: #如果var大于0,则下一行代码输出当前var的值
print ('Current variable value :', var)
var = var -1 #然后逐一循环,使var的值减1
if var == 5:
#如果var的值递减到5,则使用break停止循环
break
print ("执行完毕,Good bye!")
拓展范例及视频二维码!
范例073:使用break和continue
源码路径:范例\073\
范例074:跳出循环
源码路径:范例\074\
执行后的效果如图6-13所示。
图6-13 执行效果
注意:如果在Python程序中使用了嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码,例如本章前面的实例6-8。
在Python程序中,continue语句的功能是跳出本次循环。这和break语句是有区别的,break语句的功能是跳出整个循环。通过使用continue语句,可以告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
在Python程序中,continue语句通常用在while和for循环中。使用continue语句的语法格式如下所示。
continue
在Python程序中,continue语句的执行流程如图6-14所示。
图6-14 continue语句的执行流程
下面的实例演示了在for循环语句和while循环语句中使用continue语句的过程。
实例文件con1.py的具体实现代码如下所示。
for letter in 'Python':
#第1个例子,设置字符串“Python”
if letter == 'h': #如果找到字母“h”
continue
#使用continue跳出当前循环,然后进行后面的循环
print ('当前字母 :', letter) #循环显示字母
var = 10 #第2个例子,设置var的初始值是10
while var > 0: #如果var的值大于0
var = var -1 #逐一循环,使var的值减1
if var == 5: #如果var的值递减到5
continue
#则使用continue跳出当前循环,然后进入后面的循环
print ('当前变量值 :', var) #循环显示数字
print ("执行完毕,游戏结束,Good bye!")
拓展范例及视频二维码!
范例075:设置非偶数时跳出
源码路径:范例\075\
范例076:一个猜数游戏
源码路径:范例\076\
执行后的效果如图6-15所示。
图6-15 执行效果
在Python程序中,pass是一个空语句,是为了保持程序结构的完整性而推出的语句。在代码程序中,pass语句不做任何事情,一般只用作占位语句。在Python程序中,使用pass语句的语法格式如下所示。
pass
如果读者学过C/C++/Java语言,就会知道Python中的pass语句就是C/C++/Java中的空语句。在C/C++/Java语言中,空语句用一个独立的分号来表示,以if语句为例,下面是在C/C++/Java中的空语句演示代码。
if(true)
;//这是一个空语句,什么也不做
else
{
//这里的代码不是空语句,可以做一些事情
}
而在python程序中,和上述功能对应的代码如下所示。
if true:
pass #这是一个空语句,什么也不做
else:
#这里的代码不是空语句,可以做一些事情
下面的实例代码演示了在程序中使用pass语句的过程,实例的功能是输出指定英文单词中的每个英文字母。
实例文件kong.py的具体实现代码如下所示。
for letter in 'Python':
#从字符串“Python”中遍历每一个字母
if letter == 'h':
#如果遍历到字母“h”,则使用pass输出一个空语句
pass
print ('这是pass语句,是一个空语句,什么都
不执行!')
print ('当前字母 :', letter)
#输出 Python 的每个字母
print ("程序运行完毕,Good bye!")
拓展范例及视频二维码!
范例077:定义一个空函数
源码路径:范例\077\
范例078:none和pass的区别
源码路径:范例\078\
执行后的效果如图6-16所示。
图6-16 执行效果
Python语言提供了一个十分重要的循环机制——for语句。它可以遍历序列成员,可以用在列表解析和生成器表达式中,还会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环(所有这一切都是在内部发生的)。
(1)一般语法。
在Python程序中,for循环会访问一个可迭代对象(例如序列或者迭代器)中的所有元素,并在所有条目都处理过后结束循环。它的语法如下。
for iter_var in iterable:
suite_to_repeat
每次循环时,把iter_var迭代变量设置为可迭代对象(序列、迭代器或者其他支持迭代的对象)的当前元素,提供给suite_to_repeat语句块使用。
(2)用于序列类型。
for循环可以迭代不同的序列对象,如字符串、列表、元组,迭代序列有如下3种基本方法。在本书后面的章节中,将有大量使用for循环迭代列表和元组的演示实例。
Python语言中的break语句可以结束当前循环,然后跳转到下一条语句,这类似于C语言中的break。它常用在当某个外部条件被触发(一般通过if语句检查)并且需要立即从循环中退出时。break语句可以用在while和for循环中。
Python语言中的continue语句和其他高级语言中的传统continue并没有什么不同,它可以用在while和for循环里。while循环是条件性的,而for循环是迭代的,所以continue在开始下一次循环前要满足一些先决条件,否则循环会正常结束。
当在程序中遇到continue语句时,程序会终止当前循环,并忽略剩余的语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环,我们将验证条件表达式。如果是迭代循环,将验证是否还有元素可以迭代。只有在验证成功的情况下,才会开始下一次迭代。
在Python程序中使用while语句时需要注意如下4点。
(1)输出指定格式的日期,提示:使用datetime模块。
(2)输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
(3)求s=a+aa+aaa+aaaa+aa......a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),相加的数字个数将由用户通过键盘输入来指定。
(4)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。
都说万事开头难,对于刚刚步入学习编程的初学者来说,搭建开发环境往往是初学者们面临的最头疼问题。总会因为各种原因,不能顺利安装。本章将详细讲解搭建Python开发环境和IDE工具过程中的常见错误排查知识。
(1)登录 Python 官方网页,单击顶部导航中的“Downloads”链接,会显示如图1-1所示的页面。官网会自动检测当前的计算机系统,并自动提供适应于当前计算机系统的最新正式版本。如图 1-1所示,适应于当前Windows系统的最新正式版本是3.6.5。
(2)对于初学者来说,最简单的做法是直接单击“Python 3.6.5”按钮下载Python,然后按照书中介绍的方法安装即可。
图1-1 单击顶部导航中的“Downloads”链接
(3)有的读者不想安装最新正式版本,而是想安装其他版本。此时在图 1-1 所示的界面中单击左侧的“Windows”链接,在弹出的下载页面中提供了Windows系统可用的、多种Python版本的下载链接,如图 1-2所示。
(3)其中注意x86-64是指64位系统,x86是指32位系统。我们必须根据自己计算机系统的实际情况选择正确的Python下载并安装。查看计算机系统的方法非常简单,只需鼠标右键单击桌面中的“我的电脑”或“此电脑”,在弹出的快捷菜单中选择“属性”,在弹出的界面中会显示当前计算机系统的基本信息。例如笔者计算机的系统信息界面效果如图1-3所示,这说明笔者的计算机是64位系统。这就必须在图1-2所示的界面中选择带有“x86-64”标识的链接进行下载,只有这样才能下载64位的Python。
图1-2 当前Windows系统可用的Python版本
图1-3 当前电脑的Windows系统信息
(4)如果笔者错误地下载了带有“x86”标识的链接的Python,则会下载一个32位的Python,这会导致32位Python和64位Windows不兼容,造成Python安装失败。
无论是Windows 7,还是Windows 10系统,在打开exe安装程序时不要用双击鼠标左键的方式打开。正确的安装方式是单击鼠标右键,然后在弹出的菜单命令中选择“以管理员身份运行”后进行安装,如图1-4所示。
图1-4 选择“以管理员身份运行”
在官网成功下载Python后,会得到一个“.exe”格式的可执行文件,双击此文件开始安装。在第一个安装界面中,一定要勾选如图1-5所示的下方的两个复选框。
图1-5 勾选下方的两个复选框
我们不但在安装Python时用“以管理员身份运行”的方式,在“开始”菜单中打开命令是提示符(平常说的cmd命令)时也必须用“以管理员身份运行”方式。正确做法是依次单击“开始”→“命令提示符”→“更多”→“以管理员身份运行”,如图1-6所示。
这一点非常重要,因为在Windows系统中经常需要进入到命令提示符界面安装Python第三方库,如果不使用“以管理员身份运行”打开命令提示符,在安装这些第三方库时会提示没有权限的错误。
图1-6 以管理员身份运行cmd
安装Python成功后,有些读者在启动Python时可能会遇到“api-ms-win-crt-runtime-l1-1-0.dll丢失”的错误提示,如图1-7所示。
图1-7 错误提示
图1-7提示中的api-ms-win-crt-runtime是MFC的运行时环境的库,要想在Windows系统编译Python,需要使用微软的Visual Studio C++编译器,底层也会用到微软提供的C++库和runtime库。我们只需安装Visual C++ Redistributable for Visual Studio 2015组件即可解决这个问题,这个组件可以在微软官网中下载,如图1-8所示。
图1-8 下载Visual C++ Redistributable for Visual Studio 2015
有些读者在 Windows 10 中安装 Python 时会出现“2502/2503错误”,如图1-9所示。
其原因是“C:\Windows\Temp”文件夹的NTFS权限错误,解决方法是将此文件夹的user权限改为完全控制,如图1-10所示。
图1-9 “2502/2503错误”
图1-10 选中“完全控制”
虽然在苹果的macOS X系统中内置安装了Python,但是通常不一定是最新版本,其中有很多计算机内置安装的是Python 2.7。苹果系统下可以使用Homebrew工具来安装Python。Homebrew是一款mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。通过简单的一条指令,就可以实现包管理,而不用用户关心各种依赖和文件路径的情况,十分方便、快捷。
打开Homebrew,如果要安装Python 2.7,可以通过如下命令实现:
brew install python
如果想安装使用Python 3,只需要将上面命令中的python替换成python3即可:
brew install python3
如果想安装某一个具体版本的Python,首先需要查看我们可以安装哪些Python,通过下面的命令可以在Homebrew上搜索可以安装的Python版本:
brew search python
通过上述命令会列出可以安装的全部Python版本,然后通过如下命令可以安装指定版本的Python:
brew install python版本
如果读者不使用Homebrew工具安装Python,而是想从Python官网下载并安装。同前面的Windows系统一样,此时读者也需要注意自己使用的macOS X系统的位数。苹果系统是一个比较特殊的系统,默认为64位,但是可以使用32位启动。所以,Python为macOS X提供了如下两类安装包。
如果笔者没有启动32位macOS X的需求,建议安装64位的Python。在Python官方页面中提供了macOS X系统可用的、多种 Python 版本的下载链接,如图 1-11所示。
图1-11 Python官网macOS X下载页面
在Linux系统中内置安装了Python 2.7,读者在安装Python 3时移动不要删除或修改原有的Python 2.7。这是因为一些软件程序依赖目前的Python 2.7环境,例如比较重要的yum。
在Linux系统安装Python 3之前一定要安装依赖包,具体命令如下所示:
yum -y install zlib-devel bzip2-devel openssl-devel ncurses- devel sqlite-devel readline-devel tk-devel gdbm- devel db4-devel libpcap-devel xz-devel
(1)在 Python 官网页面中列出了各个版本的信息,如图 1-12所示。
图1-12 各个版本的Python
(2)通过如下命令可以下载Python 3.6.1版本的安装包:
# wget https://www.python.org/ftp/python/3.6.1/ Python-3.6.1.tgz
在安装时建议安装在一个比较好记的目录中,例如/usr/local/ python3:
# mkdir -p /usr/local/python3
(3)解压下载好的Python包(具体包名因用户下载的Python具体版本的不同而不同,例如笔者下载的是Python 3.6.1,那么这里就是Python-3.6.1.tgz)。
tar -zxvf Python-3.6.1.tgz
(4)进入解压后的目录,编译安装。
# cd Python-3.6.1
#./configure --prefix=/usr/local/python3
(5)执行make命令:
# make
(6)执行make install命令:
# make install
或者:
# make && make install
(7)建立Python 3的软链按:
# ln -s/usr/local/python3/bin/python3/usr/bin/python3
(8)将/usr/local/python3/bin加入PATH:
# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH
(9)按下Esc键,输入:wq并按下回车键退出。然后执行下面的命令,让上一步的修改生效:
# source ~/.bash_profile
(10)检查Python 3及pip3是否正常可用:
# python3 -V
Python 3.6.1
# pip3 -V
pip 9.0.1 from /usr/local/python3/lib/python3.6/site- packages (python 3.6)
(11)如果不可用,再创建一下pip3的软链接:
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
在安装pip之前需要安装setuptools依赖包,在前面1.3.2中已经安装过了,接下来通如下命令安装pip:
wget --no-check-certificate https://pypi.python.org/ packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
tar -zxvf pip-8.0.2.tar.gz
cd pip-8.0.2
python3 setup.py build
python3 setup.py install
如果出现pip3 install paramiko错误,则需要安装penssl依赖包解决,具体命令如下所示:
yum install openssl
yum install openssl-devel
cd python3.6.1
make && make install