Python少儿趣味编程

978-7-115-52055-5
作者: 李强李若瑜
译者:
编辑: 陈冀康

图书目录:

详情

Python简单易学,功能强大,是少儿学习编程的首选语言。本书是少儿学习Python编程的趣味指南,全书共17章,按照由简到难、逐步深入的方式组织各章内容。本书从认识Python开始,首先介绍了Python的安装和IDLE的使用,然后依次介绍了变量、数字和字符串、列表、元组和字典、布尔类型等数据类型,以及条件、循环、异常和注释、函数、面向对象编程、文件操作等基础知识,并且通过实际案例讲解了海龟绘图、Pygame基础和游戏编程,以及Python在自然语言处理方面的应用。 本书精心选取内容,注重难易适度和趣味性,语言通俗易懂,代码示例丰富。在多章的末尾,还给出了一些练习题并给出了解答。本书适合想要学习Python编程基础的少儿(尤其是10岁以上的孩子)及想要教孩子学习编程的家长阅读,也适合少儿编程培训班的老师用作少儿编程培训的教材。

图书摘要

版权信息

书名:978-7-115-52055-5 A20181337 Python少儿趣味编程

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    李 强 李若瑜

责任编辑 陈冀康

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


Python简单易学,功能强大,是少儿学习编程的首选语言。本书是少儿学习Python编程的趣味指南,全书共17章,按照由简到难、逐步深入的方式组织各章内容。本书从认识Python开始,首先介绍了Python的安装和IDLE的使用,然后依次介绍了变量、数字和字符串、列表、元组和字典、布尔类型等数据类型,以及条件、循环、异常和注释、函数、面向对象编程、文件操作等基础知识,并且通过实际案例讲解了海龟绘图、Pygame基础和游戏编程,以及Python在自然语言处理方面的应用。

本书精心选取内容,注重难易适度和趣味性,语言通俗易懂,代码示例丰富。在多章的末尾,还给出了一些练习题并给出了解答。本书适合想要学习Python编程基础的少儿(尤其是10岁以上的孩子)及想要教孩子学习编程的家长阅读,也适合少儿编程培训班的老师用作少儿编程培训的教材。


过去的两年时间里,在陪伴和教育儿子学习编程的过程中,我自己也误打误撞地开始编写少儿编程类图书。随着《Scratch 2.0少儿游戏趣味编程》《Scratch 3.0少儿游戏趣味编程》《Scratch 3.0少儿编程趣味课》的出版,我开始拥有了一个比较稳定的读者群体,并且通过这些读者的反馈,了解到他们的一些学习和阅读需求。少儿编程图书的读者虽然主要是小读者,但更为关切学习内容的却是他们的家长。一些家长对于计算机和编程是比较陌生的,他们关心的往往是如何快速入门以及如何帮助和辅导孩子进行学习;另一部分家长则对计算机和编程有所了解,他们关心的是为孩子选择什么样的编程语言,甚至孩子学习的效果和水平如何。我既是作者,也是家长,当面对这些读者和家长的反馈时,用一句话可以概括我的感受——可怜天下父母心!

2019年,在开通了“李强老师的编程课堂”公众号以后,有一些读者开始询问我是否计划推出Python编程方面的图书和内容。说实话,随着Scratch图书的畅销,我就有了编写一本青少年学Python编程图书的想法。但一方面,围绕Scratch 3.0手头还有很多事情要做,图书的推广、读者后续的答疑和反馈、公众号的建设和完善、后续选题的规划和构思等都需要时间和精力,因此,编写Python图书的计划一推再推。虽然我很清楚当前学习Python编程的需求非常旺盛,但现在市面上Python图书已经很多了,而且其中有不少的优秀读物,如何编写一本有特色的Python图书,我的心里也不是很有底。因此,实现编写Python编程图书的计划是一个需要反复思考、优化和尝试的过程。

好在,编写Scratch 3.0图书的过程让我对教孩子编程有了一些直观的认识和较为深入的思考,而这些都是值得借鉴的宝贵经验,也是我的优势所在。经过1年多的思考和探索,我终于完成了这本书的构思和内容组织,这才有了您手中这本《Python少儿趣味编程》。书稿交给出版社,我终于松了一口气。但我知道,这本书还远不那么“完美”,还需要作为读者的您多多批评指正,帮助我不断地提高和完善。但是,我真心希望这本书能够为少儿学编程贡献一份力量,并且愿意为此而不断地努力、改进和提高。

LOGO语言之父西摩尔· 帕普特曾经提出“低地板”和“高天花板”的原则,他强调成功而有效的技术应该能够为新手提供简单的入门方式,即“低地板”,同时又能让他们随着时间的推移和经验的积累去从事日益复杂的项目,即“高天花板”。Scratch之父米切尔·雷斯尼克又在此基础上增加了一个“宽墙壁”的理念,指出好的技术要支持不同类型的项目和学习路径,即把学习的入口和跑道都拓宽。Python语法简单,容易入门;Python功能强大,甚至能够实现各种人工智能应用;Python模块众多,可以用于Web开发、游戏开发、科学计算等众多领域,支持过程式、面向对象、函数式等多种编程范型。从某种程度上讲,Python就是一种符合“低地板+高天花板+宽墙壁”的语言。本书的目标是带领读者在学习Python的过程中,踏上“低地板”,认识和仰望“高天花板”,并且启发读者去拓展和构建自己的“宽墙壁”。最终,希望读者通过不断学习,能够构筑一间自己满意的“Python技能之屋”!

本书一共分为17章,按照由简到难、逐步深入的方式安排各章内容。在多章的末尾,给出了一些练习题,附录提供了这些练习题的参考解答。

各章的主要内容如下。

第1章 认识Python。主要带领读者认识Python编程语言,了解Python的特点,学习如何安装Python,并且编写一个简单的Hello World程序。本章还介绍了Python自带的IDE——IDLE,介绍并展示了IDLE的一些功能,而这些功能是我们学习编程的时候经常要用到的。

第2章 变量、数字和字符串。首先介绍了变量的概念、命名以及赋值;然后详细介绍了数字和字符串这两种基本数据类型,以及这两种类型相关的操作。然后,我们开始使用一个名为“成绩单”的应用示例,展示如何应用本章所学习的数据类型知识,而这个“成绩单”的示例,将贯穿于本书后续多章之中。

第3章 列表。介绍了列表数据类型,详细讲解了创建列表、访问列表、使用列表的方法和操作,并且通过一个较为生动有趣的例子——“帮Johnson找到回家的路”——展示了列表的用途。当然,最后,我们还要通过扩展“成绩单”示例进一步熟悉列表的用法。

第4章 元组和字典。介绍元组和字典这两种类型,详细讲解了如何创建、修改和使用元组和字典,如何实现字典和列表的转换。最后,通过扩展“成绩单”示例,展示了这两种数据类型的用法。

第5章 布尔类型。介绍了比较运算符和布尔运算符,通过具体的示例,展示了这些运算符的用法,还介绍了如何组合使用布尔运算符。

第6章 条件语句。首先介绍了缩进的用法,缩进在Python程序中具有重要的作用;然后,介绍了if、else、elif等条件语句,通过“成绩单”示例展示了条件语句的用法。

第7章 循环。介绍了while循环和for循环的结构和用法,通过“成绩单”示例展示了循环语句的应用。

第8章 异常和注释。首先介绍了异常的概念以及如何处理异常,然后讲解了注释的作用和用法,通过“成绩单”示例展示如何使用异常处理和注释。

第9章 自定义函数。Python拥有功能丰富的内建函数,但自定义函数为用户提供了更大的灵活性。本章介绍了函数的基本结构,如何编写和调用函数,如何设置参数和返回值等,通过“成绩单”示例展示了自定义函数的用法。

第10章 面向对象编程。Python是支持面向对象编程的语言。本章介绍了面向对象的基础知识,包括类和对象的概念,方法、构造方法、继承等,通过“成绩单”的示例展示了如何应用这些概念来实现面向对象编程。

第11章 文件操作,介绍了用Python对文件进行一系列操作的方法,包括打开文件、读取文件、写入文件等,最后通过“成绩单”的示例展示文件操作的具体用法。

第12章 海龟绘图。海龟绘图是Python的一个有趣、有用的功能模块。本章介绍了海龟绘图的用法,围绕turtle模块,介绍了导入、创建画布、控制画笔、设置颜色等基本功能,为下一章的绘制内容打下一个基础。

第13章 绘制机器猫。在第12章所介绍的内容基础上,本章详细介绍了如何使用海龟绘图来绘制一个可爱的机器猫的形象,涉及模块导入、函数调用、自定义函数等知识和技能。

第14章 绘制小猪佩奇。继续使用海龟绘图模块,绘制了小朋友们喜爱的小猪佩奇的形象。

第15章 Pygame基础。介绍了Pygame模块的基础知识,为下一章内容进行铺垫。Pygame是功能比较强大的模块,包含绘图、动画、事件处理等众多方面,是Python游戏开发的常用功能模块。本章最后通过一个简单的“弹球游戏”,初步展示了Pygame的应用。

第16章 贪吃蛇。详细介绍了如何使用Pygame编写一款经典的贪吃蛇游戏,讲解了分析、规划和开发游戏的过程,较为完整地展示了Pygame功能的应用。

第17章 Python的AI应用——以自然语言处理为例。Python广泛地用于人工智能的各种应用开发之中。本章首先概览地介绍了人工智能技术,以及Python作为人工智能语言的优势和特点,选取自然语言处理(NLP)这个领域,介绍了如何应用Python及其模块,对古典名著《西游记》进行分词处理和分析。通过本章的学习,读者对于Python在人工智能领域的应用会有一个初步的认识和体验。

市面上讲授Python编程的图书已经很多,也有不少以青少年和少儿作为目标读者的Python图书。在写作本书之前,笔者翻阅了已经出版的一部分Python图书,并进行了一番比较。经过较为深入细致的思考后,在写作本书的过程中,我们力图使得本书保持和体现如下几个方面的特色。

本书适合想要学习Python编程基础的少年儿童,对于想要快速入门Python编程的读者来说,也适合阅读和学习本书。

本书也适合想要教孩子学习编程的家长、少儿编程培训班的老师阅读参考,并且可以作为少儿编程培训的教材。

根据本书的内容难度和作者的一些调查反馈,10岁以下的孩子,需要在家长和老师的帮助或辅导下阅读和学习本书;10岁以上的孩子,可以尝试自行阅读和学习。

本书的所有配套源代码、素材及习题答案,可以通过异步社区(www.epubit.com)中本书的页面下载。读者也可以关注微信公众号“李强老师的编程课堂”进行下载,还可以通过该公众号获得更多免费的少儿编程的信息和资源。

李强,计算机图书作家和译者,曾是计算机领域的讲师,从2002年开始进行计算机编程的网络授课。目前专注于青少年计算机领域的教学,其编著的《Scratch 3.0 少儿游戏趣味编程》和《Scratch 3.0少儿编程趣味课》是该领域的畅销书,配套的教学视频也得到了读者的喜爱。可关注公众号“李强老师的编程课堂”联系作者,以获得更多支持和帮助。

首先,要感谢选择了这本书的读者,你们的需求、反馈、信任和支持,是我不断改进提高、编写更好的技术图书的原动力。还要感谢《Scratch 3.0 少儿游戏趣味编程》和《Scratch 3.0少儿编程趣味课》的读者,你们的意见和建议总是那么直接而有效,希望这本书也不辜负你们的信任和期待。

感谢我的父母、妻子和儿子。写作一本书,从思考规划谋篇布局、到开发案例进行调试、到奋笔疾书审阅校对,是一个漫长而孤独的过程。为此我牺牲了很多陪伴家人的时间。没有他们默默地支持,这几乎是不可能完成的任务。

特别感谢我的儿子李若瑜。作为本书的第一位小读者,他努力地阅读了几乎所有的内容,并对一些难以理解的地方给出了反馈,这也帮助我不断地完善和改进书稿。

感谢人民邮电出版社的陈冀康编辑的支持和帮助,他耐心地给予指导,提出修改意见,还容忍我对交稿时间一再延期。


本书由异步社区出品,社区(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、测试、前端、网络技术等。

异步社区

微信服务号


如今,我们的生活已经离不开计算机。写文章、做PPT、打电子游戏、QQ聊天、上网购物等都离不开计算机,甚至手机里的各种应用,如微信、GPS导航等,背后也都离不开计算机的支持。可你是否想过,计算机是怎么能够帮助我们完成各种各样的任务的呢?

其实计算机是通过程序来完成具体的任务的。计算机程序(Program)是一组计算机能识别和执行的指令,运行于电子计算机上,以满足人们某种需求的信息化工具。更加直白地说,计算机程序是一种软件,是使用计算机编程语言编写的指令,它告诉计算机如何一步一步执行任务,从而达到最终的目的。而使用某种计算机编程语言,经过分析、设计、编码、测试、调试等各个步骤,编写出程序以解决特定的问题的过程,就叫作程序设计或编程(Porgramming)。因此,要控制计算机方便快捷地实现各种功能,我们必须要学习程序设计,也就是编程。而要编写程序代码,我们必须讲计算机的语言,为此,我们首先要选择并学习一种计算机编程语言。

计算机编程语言的发展大概有几十年的历史。在这期间,编程语言经历了从低级语言向高级语言发展的过程。这里所说的低级语言和高级语言,并不是指语言的功能和水平等,而且是指编程语言与人类自身语言的接近程度上的区别。低级语言更加接近于机器语言,计算机理解起来比较容易,人类理解起来比较困难,这是比较底层的语言。而高级语言的语法和表达方式,更加接近于人类自身的语言,需要通过一种称为编译器和解释器的东西(你可以把编译器和解释器想象成翻译人员)将其转换为计算机比较容易理解的机器语言,然后机器才能执行。

计算机程序正是使用诸如Python、C++、Ruby或JavaScript这样的编程语言来编写的。这些语言允许我们和计算机“对话”,并且向它们发布命令。打一个比方,我们是如何训练一只狗的呢?当我们说“坐下”的时候,它蹲着;当我们说“说话”的时候,它叫两声。这只狗能够理解这些简单的命令,但是,对于你所说的其他的大多数话,它就不懂了。

类似的,计算机也有局限性,但是,它们确实能够执行你用它们的语言发布的指令。在本书中,我们将学习Python语言,这是一种简单而强大的编程语言。未来,在高中和大学阶段,Python语言将作为计算机科学课程的入门课来教授。因此,我们通过现在的学习,可以给将来打下一个较好的基础。

Python是吉多•范罗苏姆(Guido Van Rossum)在20世纪80年代后期开发的一种过程式的、面向对象的、功能强大而完备的编程语言。Python这个名字来自于一个名为Monty Python的戏剧团体。

人们使用Python语言进行各种应用开发,包括游戏软件开发、Web开发、桌面GUI开发、教育和科学计算应用开发。近年来,Python甚至成为最受欢迎的开发人工智能应用的语言之一,在图像处理、自然语言处理和神经网络等众多领域一展身手。因此,实际上Python已经涉足了所有的开发领域。当前,Python已经成为最流行的编程语言之一,在各种编程语言排行榜中位居前列。Python之所以很流行,主要是归功于它的简单性和健壮性,当然,还有很多其他的因素,后面我们还会一一介绍。

对于初学者来说,Python是一款既容易学又相当有用的编程语言。相对于其他语言,Python的代码相当易读,并且它有命令行程序,你可以直接输入指令并运行程序。Python的一些功能对于辅助学习过程很有效,用户可以把一些简单的动画组织起来制作自己的游戏。其中之一是turtle模块,该模块的灵感来自于海龟绘图(20世纪60年代由Logo语言使用),专门用于教育。还有tkinter模块,它是Tk图形界面的接口,可以用来很容易地创建一些图形和动画程序。简单易学使得Python成为青少年学习计算机编程的首选语言。在本书中,我们也将带领读者学习Python turtle模块的使用,并且会用Python编写一款有趣的游戏,相信这会让你体会到学习Python编程的乐趣和成就感!

Python的语法很简单,因而学习和理解Python编程很容易。和其他编程语言相比,Python代码更简短易懂。此外,Python中的一些任务很容易实现。例如,要交换两个数字,用Python很容易编写:(a, b)= (b, a)。学习某种新的东西,是一项耗费精力且复杂的任务。然而,Python语法的简单性大大降低了它的学习难度。此外,用Python编写的项目也很容易为人们所理解。Python的代码精炼而高效,因而易于理解和管理。

Python的另一个非常显著的特点是,它拥有大量的第三方模块和库,这是Python拥有非常广泛的应用领域的一个重要原因。Python有很多第三方的模块用于完成Web开发。例如,基于Python的Django是一款非常流行的Web开发框架,支持干净而快速地开发,支持HTML、Email、FTP等应用,因此,成为Web开发的不错的选择。结合第三方模块和库的功能和支持,Python也可以广泛地用于GUI开发和移动应用开发,例如,Kivy可以用于开发多触点的应用程序。Python还拥有强大的支持科学计算和分析的库——SciPy用于工程和数学,IPython用于并行计算等。此外,SciPy还提供了和MATLAB类似的功能,并且能够用于处理多维数组。

Python还具有其他的一些特点和优点:

既然Python有这么多的好处,那还等什么呢?我们先开始第一步,下载和安装Python吧!

要安装Python,通常我们要去Python的官方网站下载所需版本的安装文件。Python的官网是http://www.python.org,如图1-1所示。

图1-1

当点击导航中的“Downloads”菜单,可以看到适合各种操作系统的下载链接,如图1-2所示。我们可以看到,适合Windows系统的最新正式版是3.7.4。我们可以直接点击按钮“Python3.7.4”下载。

图1-2

也可以点击左边“Windows”菜单,在下载页面中选择需要下载的Python版本,如图1-3所示。

图1-3

在这里,选择下载(写作本书时的)最新版本Python 3.7.4,下载完成后,可以看到一个安装文件,如图1-4所示。

提示 Python 仅支持微软所支持的生命周期内的Windows 版本。这意味着 Python 3.7.4支持Windows Vista和更新版本。如果需要支持Windows XP,请安装Python 3.4。

图1-4

双击 “python-3.7.4.exe”,弹出安装界面。简单起见,勾选“Install launcher for all users (recommended)”和“Add Python 3.7 to PATH”选项,然后直接点击“Install Now”按钮。如图1-5所示。

图1-5

提示 选择“自定义安装”(Customize installation)将允许您选择:要安装的功能、安装位置、其他选项或安装后的操作。

提示 安装时最好勾选“Add Python 3.7 to PATH”,这是因为Windows会根据环境变量path设置的路径去查找python.exe以及本书后面要用到的一些相关安装工具。所以,如果在安装时没有勾选这个选项,后面还得手动把这些路径添加到path的环境变量中。

然后会看到安装的进度条一直在往下走,如图1-6所示。

图1-6

这里什么也不需要做,直到程序安装成功,安装成功的界面如图1-7所示。

图1-7

可以点击“documentation”链接去打开Python的帮助文档,如图1-8所示。

图1-8

当Python安装好后 。只需要在Windows的命令行窗口中输入“python”命令,就可以打开Python的Shell命令行窗口,启动交互式解释器,如图1-9所示。

图1-9

接下来,我们就可以在这个命令行窗口直接输入要执行的程序代码。

当点击导航中的“Downloads”菜单,我们可以看到,适合Mac系统的最新正式版同样是3.7.4版。我们可以直接点击按钮“Python3.7.4”下载,如图1-10所示。

图1-10

下载完成后,可以看到一个安装文件,如图1-11所示。

图1-11

双击安装文件,弹出安装界面,直接点击“Continue”按钮,如图1-12所示。

图1-12

然后会看到安装的进度条一直在往下走,如图1-13所示。

图1-13

这里什么也不需要做,直到程序安装成功,界面如图1-14所示。

图1-14

当Python安装好后。只需要在命令行窗口,输入“python”命令就可以打开Python的Shell命令行窗口,启动交互式解释器,如图1-15所示。你也可以参照1.4.2节的介绍打开IDLE来启动Python。

图1-15

安装好了Python之后,让我们先通过命令行窗口编写第一个Python程序并尝试运行一下。

在窗口中输入了一行代码“print("Hello World!")”,如图1-16所示。这行代码表达的含义是要将一行字“Hello World!”打印到屏幕上。因为这里我们只是介绍代码是什么样子的,所以大家可以不用太在意具体语句的含义。

图1-16

当按下回车键,可以看到屏幕上显示出了“Hello World!”,如图1-17所示。

图1-17

简单吧!我们的一个程序就这样实现了。

提示 Python是区分大小写的语言,所以关键字或者函数名都不能写错。例如print是打印函数,而Print则不是。

对于简单的程序,我们可以在命令行中完成,并且可以非常直观地得到了想要的结果。可是,当我们关闭Python并重新打开它时,就会发现之前的代码都丢失了。怎样才能让计算机记住我们输入的内容呢?

在实际开发程序的时候,我们总是要使用某个集成开发环境来写代码,然后将写好的代码保存到一个文件中。当我们想要使用这些代码的时候,就可以打开这个文件并对这个文件运行Python,这样一来,程序就可以反复执行了。

集成开发环境(Integrated Development Environment,IDE)是一种工具软件,它包含程序员编写和测试程序所需的所有基本工具。集成开发环境通常包含源代码编辑器、编译器或解释器以及调试器。

在学习Python编程的过程中,我们也少不了要接触IDE。这些Python开发工具可以帮助开发者加快开发速度,提高效率。IDLE是Python自带的集成开发环境,具备基本的IDE功能,包括交互式命令行、编辑器、调试器等基本组件,已经足以应付大多数简单应用的开发。当我们安装好Python以后,IDLE就自动安装好了,不再需要另外去安装。

IDLE为初学者提供了一个非常简单的开发环境,可以轻松地编写和执行Python程序。IDLE有两个主要的窗口,分别是命令行窗口和编辑器窗口。接下来,我们看一下如何使用IDLE来编写程序。

在Windows环境下,有多种方法可以启动IDLE。既可以像前面介绍的在Windows的命令行窗口,直接输入“python”命令打开Python的Shell命令行窗口,也可以通过快捷菜单或桌面图标等方式启动IDLE,如图1-18所示。

图1-18

IDLE启动后的界面如图1-19所示。

图1-19

在IDLE窗口中,可以选择“File”菜单下的“New File”命令,打开一个新的文件窗口,如图1-20所示。

图1-20

这时会弹出一个新的空白窗口,如图1-21所示。

图1-21

可以看到这个窗口中没有任何内容,它在等待我们输入命令。我们把这个窗口称为“程序”窗口,以区别于编译器窗口。我们可以在程序窗口中输入需要的指令。这里还是输入和前面我们在命令行窗口所输入的相同的代码,“print("Hello World!")”,如图1-22所示。

图1-22

需要注意的是,这里没有命令行窗口那些“>>>”提示符号,因为这些符号并不是程序的组成部分。编译器窗口通过这些提示符号,就知道我们当前是在编译器窗口工作,但是当我们编辑一个独立的文件时,就需要去掉这些由编译器导入的辅助符号。

接下来,选择“File”菜单的“Save”命令,保存这个文件,如图1-23所示。因为是新文件,会弹出“Save As”对话框,我们可以在该对话框中指定文件名和保存位置。保存后,文件名会自动显示在屏幕顶部的蓝色标题栏中。如果文件中存在尚未保存的内容,标题栏的文件名前后会有星号(*)出现。

图1-23

将文件保存到指定目录下,我们选择的路径是“D:\Python Programs\ch01”,文件名为“1.1”,如图1-24所示。

图1-24

我们已经保存了这个程序,接下来怎样运行这个程序呢?选择“Run”菜单中的“Run Module”命令,如图1-25所示。

图1-25

可以得到这个程序的运行结果,编译器窗口可以看到打印出来的“Hello World!”,如图1-26所示。

图1-26

IDLE具有非常丰富的功能,其中的一些很值得我们去了解和体验一下,因为在编写程序的时候,很可能会用到。

IDLE支持语法高亮显示。所谓语法高亮显示,就是针对代码的不同元素,使用不同的颜色进行显示,我们从图1-16中已经看到了其应用效果。默认情况下,关键字显示为橙色,字符串为绿色,定义和解释器的输出显示为蓝色,控制台输出显示为棕色。当我们输入代码时,IDLE会自动应用这些颜色进行突出显示。语法高亮显示的好处是,用户可以更容易区分不同的语法元素,从而提高可读性;与此同时,语法高亮显示还降低了出错的可能性。比如,如果输入的变量名显示为橙色,那么你就需要注意了,这说明该名称与预留的关键字有冲突,所以必须给变量更换名称。

IDLE还可以实现关键字自动完成。当用户输入关键字的一部分后,例如输入一个P,可以从“Edit”菜单选择“Expand Word”命令(或者直接按Alt+/组合键),如图1-27所示。这个关键字就可以自动完成,在这里,我们得到的是print,如图1-28所示。

图1-27

图1-28

有时候,我们只记住了函数的开头几个字母,而不记得完整的函数名称,这该怎么办?例如,我们有个input()函数,它可以接收标准输入数据,返回值为string类型。如果我们只是隐约记住了in,而忘记了后边的put,这个时候,我可以选择“Edit”菜单的“Show Completions”命令(或者直接按下Ctrl+space组合键),如图1-29所示。

图1-29

这时IDLE就会给出一些提示,如图1-30所示。

图1-30

现在只要按下回车键,IDLE就会自动完成此函数名。如果当前选定的函数不是我们想要的函数的话,还可以使用向上、向下的方向键进行查找。

IDLE还有一些其他的功能,这里就不一一详述,在本书后面用到的时候再进一步介绍。读者如果对IDLE的更多功能感兴趣,可以自行查询一下帮助。

这是本书的第1章。在这一章中,我们的主要任务是认识Python,了解如何安装Python,以及其自带的IDE——IDLE的功能和用法。

我们首先学习了程序设计和编程语言的概念,然后认识了Python这种编程语言,并且详细介绍了Python的特点。有了这些知识,我们就能理解为什么要学习Python编程。

接下来,本章针对Windows和Mac平台,介绍了如何下载和安装Python当前最新的版本。编写Python程序的方式包括使用命令行和使用IDE,本章分别介绍和展示了这两种方式。IDE是专业程序员编写较大的程序时必不可少的工具。我们进一步学习了Python自带的IDE——IDLE的使用方式,了解了IDLE的功能和特点。

通过本章,我们对Python及其编程工具有了一个感性的认识,这为接下来继续学习Python的语法、数据结构、函数等编程知识打下了一个基础。


编程总是离不开操作数据。那么,什么是数据呢?数据就是我们保存在各种数据类型、数据结构或数据库中的信息。例如,你的名字就是一条数据,年龄也是一条数据。头发的颜色,有几个兄弟姐妹,住在什么地方,是男生还是女生——所有这些都是数据。

Python 3中有6种标准的数据类型:数字、字符串、列表、元组、字典和集合。本章会介绍其中最常用的两种类型:数字和字符串。在后边的章节中,我们还会陆续介绍其他的数据类型。

在介绍数据类型前,我们来看一个重要的概念——变量。

变量就像是一个用来装东西的盒子,我们把要存储的东西放在这个盒子里面,再给这个盒子起一个名字。当我们需要用到盒子里的东西的时候,只要说出这个盒子的名字,就可以找到其中的东西了。盒子里的东西是可以变化的,也就是说,我们可以把盒子里原来的东西取出来,再把其他的东西放进去。例如,我们将这个盒子(变量)命名为box,在其中放入数字12。那么,以后就可以用box来引用这个变量,它的值就是12。当我们把12从盒子中取出,再放入另一个数字21的时候,如果此后再引用变量box,它的值就变成21了,如图2-1所示。

图2-1

提示 变量是存储在内存中的值。这就意味着,当我们创建变量时,会在内存中开辟一个空间。根据变量的数据类型,解释器会分配指定的内存,并决定什么数据可以存储在内存中。因此,我们可以为变量指定不同的数据类型,这些变量可以存储整数、小数或字符等。

在Python中,声明变量很简单,直接为变量起一个名字,并且用等号(=)为它赋值就可以了。这个等号叫作赋值运算符,赋值运算符(=)左边是一个变量名,赋值运算符(=)右边是存储在变量中的值。

例如,我们声明一个叫作box的变量,然后将12赋值给变量box。

>>> box=12

然后,我们可以在提示符后面输入box,来看一下这个变量中的内容。

>>> box
12

我们看到box中的内容是12。如果我们将数字21重新赋值给box,那么box的值就会从12变为21,这就相当于图2-1所示的操作。

>>> box=21
>>> box
21

提示 如果代码前面用>>>开始,表示这是在命令行窗口执行的语句。如果代码前面没有>>>开始,表示这是要在编辑器窗口完成的代码。

变量名可以包括字母、数字、下划线,但是数字不能作为变量的开头。例如,name1是合法的变量名,而1name就不是,如下所示:

>>> name1=5
>>> 1name=3
SyntaxError: invalid syntax

我们可以看到,当变量名称有问题的时候,会出现红色的错误提示“SyntaxError:invalid syntax”,这表示出现了语法错误。

Python的变量名是区分大小写的,例如,name和Name被看作是两个不同的变量,而不是相同的变量。如下所示,变量name中的内容是“John”,变量Name中的内容是“Johnson”,这是两个不同的变量。

>>> name="John"
>>> Name="Johnson"
>>> name
'John'
>>> Name
'Johnson'

另外,也不要将Python的关键字和函数名作为变量名使用。例如,如果我们用关键字if当作变量并且为它赋值,系统直接就会报错。

>>> if=3
SyntaxError: invalid syntax

提示 解释器在加载上下文的时候,如果遇到一些预先设定的变量值,就会触发解释器内置的一些操作,这些预定的变量值就是关键字。

变量名不能够包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message是可以的,但变量名greeting message会引发错误。

>>> greeting_message="Hello"
>>> greeting message="Hello"
SyntaxError: invalid syntax

提示 总结一下,Python变量的命名规则。(1)变量名可以由字母、数字和下划线组成,但是不能以数字开头;(2)变量不能与关键字重名;(3)变量名是区分大小写的;(4)变量名不能够包含空格,但可使用下划线来分隔其中的单词。

通常,我们习惯于变量以小写字母开头,除了第一个单词外,其他单词的首字母都大写,如numberOfCandies。

除了上述变量命名方法之外,骆驼拼写法也很常用。就是将每个单词首字母大写,就像NumberOfCandies一样。之所以把这种拼写方法叫作骆驼拼写法,是因为这种形式看上去有点像是骆驼的驼峰,如图2-2所示。

图2-2

我们还可以用一条语句,同时为多个变量赋值,例如,可以将变量a、b和c都设置为1。

>>> a=b=c=1

这叫作多变量赋值。现在,我们可以看到变量a、b和c现在都等于1。

>>> a
1
>>> b
1
>>> c
1

在Python 3中,等号可以和一个算术操作符组合在一起,将计算结果重新赋值给左边的变量,这叫作增量赋值。

>>> age=9+1
>>> age
10

提示 增量赋值通过使用赋值操作符,将数学运算隐藏在赋值过程当中。和普通赋值相比,增量赋值不仅仅是写法上的改变,其有意义之处在于,赋值运算符左边的对象仅仅处理和操作了一次。

Python将不带小数点的正整数和负整数统称为整数。在Python中,我们可以对整数执行加、减、乘、除等基本的数学运算。要做这些运算,我们要用到算术操作符+、−、*和/。我们来看一个比较复杂的示例,12345加56789等于几?

>>> 12345+56789
69134

心算这道题,并不是很容易,但是Python可以毫不费力地计算它。我们还可以一次把多个数字加在一起:

>>> 22+33+44
99

Python还可以做减法运算:

>>> 1000-17
983

还可以使用星号(*)做乘法运算:

>>> 123*456
56088

使用斜杠(/)进行除法运算:

>>> 12345/25
493.8

我们还可以把这些简单的运算组合成一个较为复杂的计算:

>>> 987+47*6-852/3
985.0

按照数学的规则,乘法和除法总是在加法和减法之前进行,Python也遵循这个规则。图2-3展示了Python执行计算的顺序。首先,进行乘法运算,47*6得到282(用红色字体表示)。然后,进行除法运算,852/3得到284.0(用绿色字体表示)。接下来,进行加法运算,987+282得到1269(用蓝色字体表示)。最后计算减法,1269−284.0得到985.0(用紫色表示),这就是最后的结果。请注意,这里我们的结果是一个带小数的浮点数。

图2-3

提示 在Python 3中,除法/的结果包含小数,如果只想取整数,则需要使用//;而在Python 2中,除法/的取值结果会取整数。

如果想要在执行乘法和除法之前,先执行加法和减法运算,该怎么办呢?

来举个例子,假设你有两个好朋友,现在有9个苹果,你想要把苹果平均分给你自己和好朋友们,该怎么办?你必须用苹果数除以分苹果的人数。

下面是一种尝试:

>>> 9/1+2
11.0

这个结果显然是不对的。当你只有9个苹果时,是无法给每人分11个苹果的。问题就在于,Python在做加法前先做了除法,先计算9除以1(等于9),然后再加上2,得到的是11。要修正这个算式,以便让Python先做加法计算,我们需要使用括号:

>>> 9/(1+2)
3.0

这就对了,每人3个苹果。括号强制Python先计算1加2,然后再用9除以3。

带小数点的数字都叫作浮点数。浮点数的例子如下所示:

>>> 0.1+0.1
0.2
>>> 4*0.2
0.8
>>> 4.8/2
2.4
>>> 2-0.8
1.2
>>> 9/3
3.0

需要注意的是,有的时候,运算结果包含的小数位可能是不确定的。

>>> 0.2+0.1
0.30000000000000004
>>> 4.8/0.4
11.999999999999998

我们看到0.2+0.1并不是等于0.3,而是等于0.30000000000000004。这并不是Python的问题,所有基于二进制的浮点数都会有这个问题,这是计算机本身存在的问题。Python会尽力找到一种方式,尽可能精确地表示结果,但鉴于计算机内部表示数字的方式,这在有些情况下是很难做到的。

到目前为止,我们只使用过数字。现在,我们再来学习另一种数据类型:字符串。Python中的字符串就是字符的序列(这和在大多数编程语言中是一样的),可以包含字母、数字、标点和空格。我们把字符串放在引号中,这样Python就会知道字符串从哪里开始到哪里结束。例如,下面是一个常见的字符串:

>>> "Hello World!"
'Hello World!'

要输入字符串,只要输入一个双引号("),后面跟着想要的字符串文本,然后用另一个双引号结束字符串。也可以使用单引号(')替代双引号。但是为了简单起见,在本书中,我们只使用双引号。

提示 大家要注意,这里的单引号和双引号都是英文(半角字符)的单引号和双引号。

字符串也可以存储到变量中,就像我们对数字所做的一样。

>>> myString="This is my string"
>>> myString
'This is my string'

提示 Python作为一门动态语言,其变量的类型可以自由变化。这个特性叫作动态类型,它提高了编写代码的效率,但也增加了阅读代码和维护代码的难度。

如果一个变量之前存储过字符串,这并不会影响到我们随后为其分配一个数字;同样,如果一个变量之前存储过数字,也不会影响到为其分配一个字符串。例如,我们先将变量myString赋值为数字5,这个时候我们可以看到,myString的内容是一个数字。接下来,我们为myString重新赋值,这次将一个字符串"This is a string"赋给变量,可以看到,myString的内容已经成了字符串。

>>> myString=5
>>> myString
5
>>> myString="This is a string"
>>> myString
'This is a string'

如果把一个数字放在引号中会怎么样呢?它是字符串还是数字呢?在Python中,如果把一个数字放在引号中,它会被当成是字符串。正如我们前面提到的,字符串就是一连串的字符(即使其中偶尔有一些字符是数字)。例如:

>>> numberEight=8
>>> stringEight="8"

numberEight是数字,stringEight是字符串。为了看出它们之间的区别,我们把它们相加:

>>> numberEight+numberEight
16
>>> stringEight+stringEight
'88'

我们把数字8加上8,就得到数字16。但是,当我们针对"8"和"8"使用+操作符时,只是把字符串直接连接在一起,得到了"88",也就是把两个字符串连接成了一个更长的字符串。

正如你所见到的,我们可以对字符串使用+操作符,但是结果与对数字使用+操作符大相径庭。使用+连接两个字符串时,会将第二个字符串附加到第一个字符串的末尾,生成一个新的字符串,如下所示:

>>> greeting="Hello "
>>> name="Johnson"
>>> greeting+name
'Hello Johnson'

这里创建了两个变量greeting和name,分别为它们赋一个字符串值"Hello"和"Johnson"。当我们把这两个变量加在一起时,两个字符串就组合成一个新的字符串"Hello Johnson"。这里需要注意一下,Python是不会自动给字符串添加一个空格的,所以为了能隔开两个单词,我们需要在第一个字符串末尾增加一个空格。

内置函数就是编程语言中预先定义的函数,它可以极大地提升程序员的效率和程序的可读性。我们来看几个常用的内置函数。

print()函数

print()函数将括号内的字符串显示在屏幕上,而这些要打印的字符串就是print()的参数。

>>> print("Hello World!")
Hello World!
>>> print("What is your name?")
What is your name?

提示 函数的参数,就是在调用函数的时候用来运行函数的值,在调用该函数的时候,参数一般放在函数后面的括号中。

input()函数

input()函数等待用户在键盘上输入一些文本并按下回车键,由此获取用户输入的文本。在下面的示例中,我们使用input()函数先将输入的字符串赋给变量myName,再调用print()函数,在括号中包含表达式 "My Name is"+myName,然后就可以将拼接好的字符串输出到屏幕上。

>>> myName=input()
Johnson
>>> print("My name is "+myName)
My name is Johnson

len()函数

可以向len()函数传递一个字符串(或包含字符串的变量),该函数会返回一个整数值,表示字符串中的字符的个数。

>>> len("Hello")
5
>>> myName="Johnson"
>>> len(myName)
7

方法是Python可以对数据执行的函数。例如,在下面示例中,在myName. title()中,myName后面的句点(.)让Python对变量myName执行方法title所指定的操作。

>>> myName="johnson"
>>> myName.title()
'Johnson'

接下来,我们再来看几个经常用到的字符串方法。

title()

title()方法以首字母大写的方式显示每个单词,也就是将每个单词的首字母都改为大写。在上面示例中,我们用title()方法将"johnson"改变为"Johnson"。

upper()

upper()方法将字符串全部改写为大写字母 ,在下面示例中,upper()方法将"johnson"修改为"JOHNSON"。

>>> myName.upper()
'JOHNSON'

lower()

lower()方法将字符串全部改写为小写字母,在下面示例中,lower()方法将"JOHNSON"改为了"johnson"。

>>> "JOHNSON".lower()
'johnson'

我们在前面介绍了数字类型和字符串类型,如果想把数字和字符串连接在一起,会出现什么问题呢?例如,8+" apples":

>>> 8+" apples"
Traceback (most recent call last):
  File "<pyshell#63>", line 1, in <module>
    8+" apples"
TypeError: unsupported operand type(s) for +: 'int' and 'str'

我们会看到,有错误提示出现。这是一个类型错误,因为在Python中,不能将不同数据类型的值连接到一起。所以,要想将不同的数据类型连接在一起,需要先进行数据类型转换。

str()函数可以将非字符串值转换为字符串。还是用刚才的例子,我们通过str(8)将数字8转换为字符串"8",然后就可以将它和后边的字符串连接了,如下所示。

>>> str(8)+" apples"
'8 apples'

int()函数可以将非整数值表示为整数。假设我们要为班级中每位同学购买3个作业本,那么如果知道班级里学生的数量,就可以求出需要多少个作业本。我们可以通过input()函数,让用户输入班级学生的数量。但是,我们知道,input()函数总是返回一个字符串,即便用户输入的是数字。所以,我们还要通过int()函数,把输入的数值转换为整数,然后再进行数学运算,如下所示。

>>> studentNumber=input()
33
>>> studentNumber
'33'
>>> int(studentNumber)*3
99

int()函数还可以把浮点数转换为整数,它会将小数点后边的内容全部忽略掉,如下所示。

>>> int(3.1415926)
3
>>> int(9.9)
9

float()函数用于将整数和字符串转换成浮点数。如下所示:

>>> float(8)
8.0
>>> float("13")
13.0
>>> float("5")*8
40.0

通过前面的学习,我们已经知道如何在Python中使用变量、数字和字符串。接下来,我们综合运用前面所介绍的这些知识来创建一个成绩单,以便记录班级里的同学的成绩。

首先,我们需要使用input()函数提示用户输入学号和姓名。然后,要求用户输入语文成绩、数学成绩和英语成绩。接下来,我们会使用print()函数把这位同学的学号、姓名、语文成绩、数学成绩、英语成绩和三门功课的总分数打印出来。因为输入的各科得分是字符串类型,所以为了计算总分,我们还需要用int()函数把字符串类型转换成数字类型来进行求和计算。代码如下所示:

name = input("请输入学生姓名:")
userID = input("请输入学生学号:")
score1 = input("请输入学生语文成绩:")
score2 = input("请输入学生数学成绩:")
score3 = input("请输入学生英语成绩:")
total = float(score1) + float(score2) + float(score3)  
print ("学号     姓名     语文    数学    英语    总分")
print (userID,"   " ,name, "   ",score1, "   ",score2, "   ",score3,"   ",total)

我们把这段代码保存到D:\Python Programs\ch02目录下,并且将程序文件命名为2.1.py。运行程序后,其输出结果图2-4所示。

图2-4

在本章中,我们首先介绍了变量的基本概念,了解了变量的命名规则、变量的赋值方法等知识。在此基础上,我们进一步学习了Python的两种基本数据类型——数字和字符串,它们可以用来存储不同类型的变量。

针对数字类型,我们介绍了算术运算符、整数、浮点数和数学运算等知识。对于字符串,我们介绍了Python的一些内置函数和常用的字符串方法。最后,我们介绍了整数、浮点数、字符串等数据类型之间的转换,并且通过一个记录并显示成绩单的小示例,综合运用了本章所学到的知识。

1.以下哪些可以作为变量的名称?哪些不可以,为什么?

1number number1 apple-3 else numberOfApples num of apples

2.假设笑笑打算举办一次聚会,并且计划让每个人吹破两个气球。最初有15个人要来,后来她又邀请了9个人。她试图使用下面的Python代码来计算一共要买多少个气球:

>>> 15+9*2
33

但这似乎不对。问题在于乘法在加法之前计算。为确保Python先做加法,需要怎样加括号呢?笑笑实际上需要买多少个气球呢?

3.编写一个程序来帮助用户计算长方形的面积。要提示用户自己输入长和宽,然后根据用户输入的数值,告知用户长方形的面积是多少。


相关图书

Python极客项目编程(第2版)
Python极客项目编程(第2版)
动手学自然语言处理
动手学自然语言处理
Python财务应用编程
Python财务应用编程
Web应用安全
Web应用安全
深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
Python量子计算实践:基于Qiskit和IBM Quantum Experience平台
Python量子计算实践:基于Qiskit和IBM Quantum Experience平台

相关文章

相关课程