从第一台电子计算机诞生至今,计算机技术革命的浪潮一浪高过一浪。硬件方面,从电子管、晶体管到集成电路,工艺技术不断提高;软件方面,汇编语言、C++、Java、Python你方唱罢我登场。抛开摩尔定律、安迪比尔定律,一个不争的事实是,计算机的数量已经悄然超过人类的总数量。毫不夸张地说,我们生活在一个计算机的世界中,看看我们每天的生活,起床是被手机的闹钟叫醒的,吃早饭的时候顺便刷朋友圈或者今日头条,上班路上听喜马拉雅,甚至上厕所都在翻阅公众号或者玩游戏。至于办公,更是一分钟也离不开计算机,浏览器、Office、PDF、Photoshop不胜枚举。下班回家后,很多孩子的作业都是在手机端完成的,不少课程也在移动端,老师的点评和互动在网络上,甚至提交作业也是通过手机或者计算机实现的。对于这一切,我们都已经习以为常。
而另一个明显的事实却往往被我们所忽略了,软件越来越多,操作越来越方便,界面越来越友好且不必说,单是编程语言也越来越方便、简单,门槛越来越低,这是一个显著的趋势。20年前,听说某人会使用Office,那自然是一个IT精英了,听说某人居然会写C语言代码,那就是计算机大神了,这些精英是普通人很难企及的,因为大部分人连计算机都没摸过。可现在看看,在每个办公场所,哪里没有计算机?在每个城市甚至乡村中,都有那么一些被称为“码农”的人,他们是这个社会最重要的工种之一,如果某个人不会使用计算机,他甚至很难找到一份工作。再过一二十年将会发生什么?毫无疑问,每个人都需要掌握一门编程语言!
阿尔法狗已经将包括柯洁、李世石在内的那些最聪明的围棋高手远远地抛到后面,AI技术已经深入人们生活的方方面面,大数据可以轻易地描绘出每个人的购物习惯、个人喜好、经济收入、社会关系,除非不上网。我们注意到,一些发达省份,已经将信息技术作为高考的一个科目,而这只是一个开始,程序设计的大幕已经在中学校园拉开,这便给那些创造力十足、敢闯敢试、聪明而充满活力的大脑插上了飞翔的翅膀。诚然,我们的高考是百万人过一座独木桥,但转折就在当下,掌握一种用途广泛、上手极易的程序设计语言无疑是弯道超车的不二之选。百万大军中争得为数不多的“985”“211”“双一流”高校的青睐是一条传统道路;剑走偏锋,发展兴趣,大胆创新,用Python这个人人可及的工具实现和验证自己的想法则是一条创新之路,且不乏成功案例。
Python编程之旅——与小博士漫游太阳系前言Python作为一种脚本语言,有着广泛的使用场景,无论在大数据开发、人工智能、科学研究中都是当红角色。此外,Python语言有众多优秀的第三方库可供选择,从一开始就拒绝刀耕火种,天然地站在巨人的肩膀上。我们在上中学的时候都有过很多想法,苦于没有实现这些想法的工具和条件,只能想想而已。但当前的中学生有条件了,可以通过程序代码改变这个世界,改变自己的命运,就像盖茨一样,就像扎克伯格一样!早点接触Python,就像20年前那些会用Office,会写C++代码,拥有梦想,思想超前的人,他们创造了百度,创造了腾讯,改变了人们生活的方式,创造了信息时代的游戏规则。如果想用最小的成本将自己的想法变成现实,那么Python将是最佳的选择。
如果有勇气接触Python,就会发现上手Python比想象的容易得多。本书中用到的数学知识都在初中课本范围内,因此对于中学生,对于没有接触过程序设计的人都不会造成太大的困难,几乎是零门槛的。坦诚地说,对于绝大部分人来说,学一门计算机语言是枯燥的。本书最大的特色是将Python语言的各知识点融入一个科幻故事中,随着故事的展开,一层层不断推进知识的讲解,并以一种充满趣味的方式对相关知识灵活应用,同时力求以实用为目标。此外,以《元哥说Python》话外音的方式,用诙谐幽默的语言和形象的类比,深入浅出地讲解原本枯燥乏味的程序设计知识。本书的章节安排如下。
第1章,调皮捣蛋、不爱学习的中学生Clude在参加一场未来生活博览会后,发生了180°的转变,喜欢上了Python,并立志要取得顶尖学府的博士学位。介绍了Python可以做哪些事情,使读者对Python有一个直观的概念。最后,介绍了Python的安装和开发环境的搭建。
第2章,将探访地球的外星文明作为引子,故事徐徐展开,面对飞船AI的考核,Python成为主人公攻坚克难的利器。以《笑傲江湖》中剑宗和气宗作为类比,介绍了编译型语言和解释型语言的特点,说明了Python的独特优势。通过《元哥说Python》的话外音,以非常幽默的方式介绍了Python的基本语法,这也是全书的基础部分。
第3章,很快迎来了AI的第一次考验,一个非常神奇的数学问题——黑洞数。在第2章理解Python基本语法的基础上,完成了第一个Python程序,同时提出程序优化的概念,这是一种精益求精的精神。在此基础上,介绍了Python中函数的使用,这也是本章的重点。当然故事也要推进下去,主人公的误操作导致他们陷入了黑域(科幻小说《三体》中的概念)。
第4章,介绍第三方库的使用,这是提高开发效率的最佳手段,Python第三方库使我们得以集中精力于有所创新的地方,而不用去重复开发那些别人已经做得非常好的功能。本章做了一个意义特别的应用——土星背景的词云贺卡,信息来源是刘慈欣老师《三体》科幻小说中云天明讲给陈心的故事《王国的新画师》,其中用到中文jieba分词和wordcloud词云两个Python第三方库。
第5章,介绍基于turtle库的应用开发,从古老的印度故事切入,介绍等比数列和无限逼近的概念,并细致地讲解了turtle的使用方法。本章完成了3个程序实例、等比数列柱状图、turtle太阳系模型,以及一个非常漂亮的时钟。
第6章,介绍基于tkinter的界面开发,详细地介绍了tkinter控件、布局和canvas画布,并演示了如何使用tkinter做出动画效果。此外,用tkinter制作了真实比例的太阳系模型,通过滑块调整系数实现太阳和八大行星的放大、缩小、同屏显示。
第7章,介绍Python第三方图像处理库PIL的使用,对于图像的创建、剪切、粘贴、调整大小、旋转、翻转、过滤效果均做了举例演示。在此基础上综合应用,实现了图片验证码生成工具,这也是网上最常用的应用之一。而此时主人公对太阳系的考察已经深入地球,有感于清风明月和古诗美酒,在AI的要求下,他们决定用tkinter做一个动态的地月系统,真切地模拟月相的变化。
第8章,有了之前的Python基础和多个应用开发的实践积累,程序开发也从单纯的功能实现转到设计层次。本章通过“把大象装冰箱”的例子,对比了面向过程和面向对象这两种程序设计思想,进而引出“类”的概念。作为一个应用实例,介绍了非常经典的路径优化“旅行家问题”。故事情节也在发展,主人公得到一个神秘文件,从中可以恢复出1977年发射的“旅行者1号”飞船携带的黄金光盘,小博士Clude实现了一个刮刮卡效果。这个例子实现了软件开发、太空探索、项目娱乐的统一。
第9章,Python有一个非常强大的图表库matplotlib,在科学研究和论文写作上是一把利器。本章介绍了使用matplotlib绘制经典图表的案例,实际上这已经是大学课堂上的内容了,一旦了解了matplotlib,读者就会发现自己可以轻松掌握这项黑科技。同龄的中学生还在题海战术中苦苦挣扎的时候,你已经实现了弯道超车。知识需要迁移和融合,本章将一元二次方程曲线作为一个应用案例,将之前学过的tkinter嫁接到matplotlib上,学习编程语言的同时,加深对数学的理解。
第10章,有了前面章节的知识,读者已经可以利用Python进行简单的程序开发了,本章将再次实现跨越,介绍线程的使用。线程是程序设计中的一个非常关键的概念,对于提高应用的效率和处理能力至关重要,一旦掌握了线程的使用,读者就是一个真正的软件工程师了。主人公迷上了地球文明的历史,圆周率的计算被再次发掘出来。本章演示了使用“割圆法”和“蒙特卡洛方法”两种不同的思路实现圆周率的求解问题,练习线程使用的同时,复习tkinter相关知识。
第11章,主人公初心不改,在刚进入太阳系的时候便决心做出一个太阳系模型,随着知识和技能的积累,时机终于成熟了。本章实现了太阳系的逼真动画效果,并介绍模块化的设计思路。太阳本尊、八大行星、闪烁的星光、漫天的流星雨……应有尽有,八大行星的公转速度是按照真实比例进行的,读者能看到被称为“神行太保墨丘利”的水星步伐轻盈,同时也会感慨于年迈体弱的海王星步履蹒跚。
第12章,Office是当前办公中无论如何也绕不过去的,我们不满足于手动操作Word和Excel。本章使用Python第三方库,自己封装了WordOpt类和ExcelOpt类,并在此基础上通过Python代码实现了一个非常漂亮的Word格式的太阳系考察报告,包括段落、表格、图片等常规因素。
第13章,主人公着迷于中国古诗词,于是决定做一个网络爬虫,从网页上把小学课本中的古诗词全部爬取下来,并且用tkinter做了一个界面,实现了启动爬取、搜索诗词、导出诗词等功能。作为一个综合性的案例,本章用到的知识比较全面,涉及Python网络编程、数据库相关操作、Web页面解析、文件读写等众多内容,不要求所有的读者掌握本章内容,建议学有余力的读者可以挑战一下自己。
本书读者对象:
本书是为中学生编写的,只需要有初中的知识水平,便可以无障碍地阅读,书中大多数内容都是较为贴近中学教材的。阅读本书不要求读者具有程序设计的基础,可以从零开始,当然如果读者曾经学习过其他的编程语言,无疑掌握起本书内容来将会更加容易。因为重点突出,表述幽默,实例清新有趣,且有故事情节穿插其中,学习曲线也较为平坦,本书也可以作为对Python语言感兴趣的读者的入门读物。
如何阅读本书:
书中第2章是最基础的知识,相对略显枯燥,但却是后续章节的基础,需要认真掌握,其后章节是伴随着故事情节循序渐进展开,建议按照章节顺序阅读。
由于是面对初学者,书中的代码基本上是完整呈现的,因此在局部可能占据较大篇幅,书中所用到的代码和资源均可在清华大学出版社网站中找到。每章结尾都提供了专门的习题供读者练习,习题的参考答案在清华大学出版社网站中可以找到。考虑到部分读者可能对计算机操作不太熟悉,书中以扫描二维码的方式提供了部分演示视频。
纸上得来终觉浅,绝知此事要躬行,尽管本书提供了完整的代码文件,还是建议读者一行行地录入代码,在键盘的噼啪声中,大脑会在无意间构建起学习的回路。“学而不思则罔,思而不学则殆”,Python的学习更是如此,学习、思考、实操,一个都不能少!
人类文明是迅速发展的,从500年前的地理大发现开始,人类社会的发展进入了快车道。工业革命和信息革命犹如两级火箭,将知识更新和技术进步的速度推到了一个历史上从未有过的高度。万物互联、人工智能、大数据处理这些前沿技术影响着人们生活的方方面面,甚至在不知不觉间决定了未来的方向。教育理念和方法唯有顺应时代的潮流才不至于走上弯路,互联网带来无限的可能性,创新是时代的潮流,本书希望为中学生推开一扇窗户,从传统中跳出来,透过迷茫看清时代前进的方向,灵活学习,不断创新,这条路已经被璀璨的星光照亮,迈出关键的一步,你将有机会与他们争辉一方。
30年前,我们开始奋发学习英语,因为改革开放打开了国门,我们面对的是金发碧眼的西方人;如今我们奋发学习Python,因为未来是人工智能的世界,我们面对的是无所不在的智能机器,有的人会控制它们,剩下的人将被它们控制,或许今天你已经做出了选择,相信历史会照亮未来的行程。
Hello World
Hello Python
Hello Robots
Hello AI
限于作者水平,书中不免有不足之处,请多批评指正,不胜感激!
樊瑞元2020年1月