
本书内容经过多次实践,从趣味易懂的语言讲解枯燥的编程知识,能够让初学者轻松掌握Python的基本语法、计算机程序设计中的常用算法,快速具备一定的实战开发能力。 本书共分为三个部分,第一部分是基础篇,重点讲解基本语法;第二部分是进阶篇,重点讲解函数和多种组合数据类型;第三部分是应用篇,重点讲解程度设计、web开发及游戏开发,让学习者能够快速具备Python实战能力。本书适合学习计算机的初学者阅读,可作为中小学信息化兴趣课程的参考教材,也可作为全国计算机等级考试Python程序设计二级的入门教材。
奔向未来 我是在江西的一个小城市长大的。小时候,父母跟我说只要好好读书,去大城市读大学,未来就会在我手中;到了上海读大学,我却发现“游戏规则”变了,只会读书是不行的,还需要培养其他方面的兴趣;努力背单词考完托福GRE出国后,又发现只会外语单词也是远远不够的,还要具备听力、口语等能力;好不容易读完博士,进入美国微软工作,却发现公司更关心对系统架构掌握的程度和编程能力;创业时又体会到客户最关心的是产品能否解决问题,而非产品所蕴含的技术水平。一次又一次的经历让我经常思考一个问题,我们应该如何奔向未来? 2018年一个普通的日子,因为疏水闸的一项技术,我与本书的作者史向东在上海相识。在技术讨论的空余时间,当得知作者正带着几个小学生进行Python学习时,我饶有兴趣地与他进行了交流。“你所讲的内容,小学生能接受吗?”“很多复杂的算法,比如动态规则,他们应该很难搞懂吧?”当得知作者正在筹划写本书时,我更是期待着先睹为快。 这几年,正值中国计算机教育大发展的时期。层出不穷的各种编程课程成为青少年计算机入门的重要途径,有的通过积木式编程快速提升学生兴趣,有的通过竞赛编程让学生在成就感中进步,但无论哪种方法,有个好的入门导师极为重要。本书的作者是程序员出身,多年从事编程教学工作,先后参与编写了多本青少年编程学习教程,培养的学生不乏有五六年级就通过相关计算机能力认定考试的。作者之一的曹剑更是从三年级就开始学习计算机编程,在2017年ASC世界大学生超级计算机竞赛(ASC17)总决赛中,带领团队创下在3000W功耗约束下每秒31.7万亿次浮点运算性能的惊人佳绩,打破了国际超级计算机竞赛HPL计算性能的世界纪录。 本书选取一个个贴近生活的程序设计案例,创造了胖胖老师、欢欢及乐乐三个形象,用有趣味、易懂的语言讲解枯燥的编程知识。本书内容涵盖了基本语法、数据结构、基础算法以及应用开发等,阅读起来很轻松,似乎是在上一堂堂生动的计算机课,又似乎是在与作者聊天。相信你在读完本书后,将会收获很多。 我们应该如何奔向未来?我没有标准答案,但我想当“未来”走到我们面前时,计算机编程能力将同外语一样会成为人才所应具备的能力之一。作者的付出和辛劳不一定广为人知,但是毫无疑问,他们做了一件很有意义的事情。让我们跟随作者,从这里步入计算机编程的知识海洋,共同奔向未来吧! 冯翔 国家“千人计划”专家、苏州市产业技术研究院院长 2019年8月于苏州 前 言 从2017年开始,我带着刚上五年级的夏启恒同学学习Python语言,那时候,夏启恒在计算机语言方面的基础为零。经过一年时间的学习,他很快掌握了Python语言的基本技巧,从入门的基本语句到主要算法,再到分词等复杂应用。2018年9月,全国计算机等级考试(NCRE)第一次组织Python程序设计二级考试,夏启恒顺利通过。在与夏启恒的共同学习中,我发现Python语言特别适合青少年或者计算机初学者学习。 许多家长问我,孩子到底应该怎样学编程?有的学生从积木式编程开始,有的学生从代码编程入门,还有的学生挑战各类比赛。我很难说哪种方法最好,但我始终觉得大部分程序员走过的路是不会错的。回想当年我学习编程的过程,从GW-Basic开始,一行行代码、一段段算法是最让人入迷的;从面向过程的编程到面向对象编程的思维转换,也是最让人沉醉的。于是,我在与小学生的学习交流中,努力让他们从一开始就从代码入门,然后从基本语法再到能够提高兴趣的应用实现。 本书特点 本书通过胖胖老师讲授,欢欢、乐乐学习的情境模式,将Python的基本语法、数据库以及简单的应用开发等知识串为一体,使读者能够在读完本书后,具备自学Python的能力、简单的应用开发能力,以及基础的算法实现能力。 本书适合于希望学习编程的中小学生(9~18岁最佳)、零基础的Python入门者以及一些想参加全国计算机等级考试(NCRE)Python程序设计二级考试(本书后面简称二级考试)的人,也适合于Python编程教学机构、学校作为教学参考教材。 阅读方法 本书使用的学习环境为Windows操作系统以及Python 3.6.8,共分为以下三个部分。 第一部分为基础篇,共15节课,主要从数据的输入输出、变量、数值运算、基本语句等几个方面讲解Python的基本语法。如果你已经对这一部分有所了解,则可以快速浏览或者直接跳过。 第二部分为进阶篇,从第16节到第29节,从函数学习入手,讲解函数、类,并引出面向对象的编程思想;然后对Python中的序列,包括列表、元组、集合、字典进行详细讲解;最后学习Python中库的使用及文件操作方法。前两部分的内容与全国计算机等级考试(NCRE)Python程序设计二级考试(本书后面简称二级考试)的大纲要求是一致的。如果你对二级考试有兴趣,则可以再加入一些练习题,为二级考试做准备。 第三部分为应用篇,从第30节到第36节。由于学习编程的主要目的还是应用,因此本篇也是本书学习的主要目的。从数据库入门,以学生成绩统计系统为例讲解了GUI编程,以个人主页为例讲解了Web程序开发。 本书资源 轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。 ?下载资源:本书提供的示例代码及资源文件,均可在“下载资源”处下载。 ?提交勘误:您对书中内容的修改意见可在“提交勘误”处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。 ?交流互动:在页面下方“读者评论”处留下您的疑问或观点,与我们和其他读者一同学习交流。 页面入口:http://www.broadview.com.cn/38443 本书利用青岛大学的开源项目OnlineJudge搭建了GeekMen在线练习平台。我们已经将本书中绝大部分的例题与练习题上传到该平台。 由于作者水平有限,书中难免会出现一些错误,恳请广大读者批评指正。您在阅读过程中,如果产生疑问或者发现Bug,欢迎给我们发送邮件,邮箱地址为:admin@0day.net.cn。 致谢 特别感谢夏启恒同学,他的学习过程给了我创作的灵感;感谢作者曹剑、张敏、邓贵勇等;感谢李泽洋对部分绘图和排版工作做出的贡献;最后,感谢冯翔教授在百忙之中为本书写序。 谨以此书献给我的读者以及热爱编程的朋友们。 史向东 2019年8月于南京
目 录 第一部分 基础篇 第1节 编程如此简单 / 2 1.1 程序是什么 / 2 1.2 程序的执行 / 4 1.3 选择更好的算法 / 5 1.4 跟着全球的程序员学编程 / 6 第2节 认识“大蟒蛇” / 11 2.1 Python的诞生 / 11 2.2 人生苦短,我用Python / 13 2.3 学习前的准备工作 / 14 本节练习 / 20 第3节 向世界说“你好” / 22 3.1 “Hello World”的故事 / 22 3.2 print输出语句 / 24 3.3 print()函数的用法总结 / 29 本节练习 / 30 第4节 盖个房子来“养猪” / 31 4.1 变量和变量的类型 / 31 4.2 变量的命名 / 33 4.3 变量的赋值 / 35 4.4 数据类型 / 37 本节练习 / 41 第5节 格式化输出 / 42 5.1 format格式化 / 42 5.2 格式控制 / 43 5.3 print格式输出 / 44 本节练习 / 46 第6节 数值运算 / 47 6.1 数值运算符 / 47 6.2 数值运算函数 / 50 本节练习 / 54 第7节 奇妙P进制 / 55 7.1 从0讲起 / 55 7.2 认识二进制 / 57 7.3 P进制转换 / 61 本节练习 / 62 第8节 数据类型的转换 / 63 8.1 整数类型的转换 / 63 8.2 浮点数类型的转换 / 65 8.3 复数类型的转换 / 65 8.4 数字转换为字符串 / 66 本节练习 / 66 第9节 数据的输入 / 67 9.1 变量的读入 / 67 9.2 eval()函数 / 69 9.3 综合实例 / 71 本节练习 / 72 第10节 程序控制结构的基础 / 73 10.1 流程图 / 73 10.2 流程图的画法 / 74 10.3 程序控制的三种常见结构 / 77 10.4 伪代码 / 78 本节练习 / 79 第11节 逻辑运算 / 80 11.1 认识“真”和“假” / 80 11.2 比较运算符 / 81 11.3 逻辑运算符 / 83 本节练习 / 86 第12节 学会做“选择” / 87 12.1 单分支结构 / 87 12.2 双分支结构 / 89 12.3 多分支结构 / 91 12.4 综合实例 / 93 本节练习 / 95 第13节 遍历循环 / 96 13.1 for循环 / 96 13.2 for循环中的else语句 / 101 13.3 测试运算符 / 102 13.4 综合实例 / 104 本节练习 / 104 第14节 while循环 / 105 14.1 什么是while循环 / 105 14.2 无限循环 / 107 14.3 while循环中的else语句 / 107 14.4 综合实例 / 109 本节练习 / 112 第15节 break,continue和try语句 / 113 15.1 break语句 / 113 15.2 continue语句 / 115 15.3 try语句 / 116 本节练习 / 117 第二部分 进阶篇 第16节 函数 / 120 16.1 数学中的函数 / 120 16.2 Python中的函数 / 122 16.3 函数的定义 / 124 本节练习 / 125 第17节 函数的使用 / 126 17.1 无参数无返回值函数 / 126 17.2 有参数无返回值函数 / 127 17.3 无参数有返回值函数 / 129 17.4 有参数有返回值函数 / 131 本节练习 / 132 第18节 谁的影响力大 / 133 18.1 变量的作用范围 / 134 18.2 局部变量 / 135 18.3 全局变量 / 136 本节练习 / 139 第19节 一劳永逸的好方法 / 140 19.1 代码复用 / 140 19.2 lambda函数 / 142 19.3 递归函数 / 143 19.4 面向对象的编程简介 / 146 本节练习 / 148 第20节 序列之列表 / 149 20.1 列表的定义及性质 / 149 20.2 列表的索引 / 151 20.3 列表的操作 / 153 20.4 列表的嵌套 / 160 20.5 综合实例 / 161 本节练习 / 165 第21节 序列之元组 / 167 21.1 元组的定义及性质 / 167 21.2 元组常见操作 / 169 21.3 综合实例 / 171 本节练习 / 174 第22节 序列之字符串 / 175 22.1 字符串的性质与定义 / 175 22.2 字符串常见操作 / 177 22.3 综合实例 / 184 本节练习 / 187 第23节 序列之集合 / 188 23.1 数学中的集合 / 188 23.2 Python中的集合定义及 性质 / 189 23.3 集合常见运算 / 190 23.4 集合常见操作 / 192 23.5 综合实例 / 194 本节练习 / 197 第24节 序列之字典 / 198 24.1 字典的性质与定义 / 198 24.2 字典常用操作 / 199 24.3 综合实例 / 204 本节练习 / 207 第25节 多维数据的处理 / 208 25.1 数据的维度 / 208 25.2 一维数据的处理 / 209 25.3 二维数据的处理 / 210 25.4 数据处理的高级函数 / 213 25.5 综合实例 / 215 本节练习 / 216 第26节 Python的大仓库 / 217 26.1 常见的标准库 / 217 26.2 第三方库的安装 / 223 26.3 程序发布 / 224 本节练习 / 226 第27节 用小乌龟画画 / 227 27.1 小乌龟的安装 / 227 27.2 创建一张可用的画布 / 228 27.3 定义画笔 / 229 27.4 开始画画 / 230 27.5 综合实例 / 232 本节练习 / 235 第28节 “高大上”的分词 / 236 28.1 jieba库的介绍 / 236 28.2 jieba的三种模式及常用 方法 / 237 28.3 综合实例 / 237 本节练习 / 238 第29节 文件及文件操作 / 239 29.1 文件的概念 / 239 29.2 文件读写操作 / 240 29.3 文件的其他操作 / 245 本节练习 / 246 第三部分 应用篇 第30节 数据库入门 / 248 30.1 什么是数据库 / 248 30.2 关系型数据库 / 249 30.3 认识SQLite / 250 本节练习 / 251 第31节 SQLite数据库的创建 / 252 31.1 数据库的创建与连接 / 252 31.2 表的创建 / 253 31.3 索引的创建 / 258 本节练习 / 260 第32节 SQLite数据库的使用 / 261 32.1 数据查询 / 261 32.2 添加数据 / 263 32.3 删除数据 / 266 32.4 修改数据 / 269 本节练习 / 271 第33节 GUI程序入门 / 272 33.1 认识GUI / 272 33.2 PyQt的安装 / 273 33.3 Qt Creator绘制界面 / 274 本节练习 / 281 第34节 学生成绩统计系统实例 / 282 34.1 设计目标 / 282 34.2 界面设计 / 284 34.3 程序控制 / 288 34.4 数据库操作 / 295 34.5 程序代码 / 300 本节练习 / 305 第35节 Web应用基础 / 306 35.1 什么是Web应用程序 / 306 35.2 常见的Web库 / 307 35.3 HTML介绍及常见命令 / 308 本节练习 / 310 第36节 web2py制作个人主页 / 311 36.1 web2py的安装 / 311 36.2 个人主页的制作 / 311 本节练习 / 318