
本书分为前后两部分,第一部分以Python基础知识为主,案例贯穿始终,主要包括:基础知识、面向对象、多线程、数据库编程、图形界面设计和文件操作;第二部分以小游戏和项目开发案例为主线,在游戏和项目设计与开发中学习知识点的应用,做、学、练于一体。本书语言精练、层次清晰、由浅入深,以案例为主线讲解知识点,以精心设计的5个具有吸引力的游戏和项目作为章节名称进行知识点的实践训练,激发学生学习兴趣和学习愿望。 本书提供完整的课程资源包,包括案例源代码、课件PPT等。 本书可以作为本科院校计算机相关专业Python基础课程的教材或实践配套教材,也可以作为非计算机专业Python语言公共基础课教程和大专、培训类学校的教材,还可以作为程序员或编程爱好者的参考用书。
前 言 Python经过30多年的发展,已经渗透到计算机科学与技术、可视化技术、大数据与人工智能、统计分析、财务管理、图形编程与图像处理、游戏设计、密码学、生物、化学、医药辅助设计、天文信息处理等几乎所有专业和领域,因此Pythony语言已成为目前最受欢迎的计算机设计语言之一。 Python是一门免费、开源、跨平台的高级动态编程语言,也是一门快乐、优雅的生态语言。Python支持命令式、函数式编程,完全支持面向对象程序设计,拥有大量功能强大的内置对象、标准库和扩展库。Python中的很多功能都可以通过直接调用内置函数或标准库方法实现。Python易学易用,语法简洁清晰,代码可读性强,编程模式符合人们思维方式和习惯。 本书的编写是根据Python语言基础教学的特点,以及课程的知识、能力、素质目标的要求,既覆盖相关知识点,又重点突出实践能力、素质的培养和编程思维的培养。本书语言精练、层次清晰、由浅入深,以案例为主线讲解知识点,并精心设计了5个具有吸引力的游戏和项目作为章节名称进行知识点的实践训练,可以有效地提高学生的学习兴趣和满足学生学习愿望,使学生愉快地学习。本书共分为11章,前6章是基础知识讲述,后5章是以游戏和项目为主线的实践训练。 第1章基础知识,主要讲解Python语言的发展、特点、开发环境、程序编写规范及与其他语言的差别、数据类型和变量、控制结构和函数与模块等;第2章面向对象,主要讲解类与对象、构造与析构方法、变量、方法、继承和多态;第3章多线程,主要讲解线程的概念、创建线程、join和线程同步等知识点;第4章数据库编程,主要讲解数据库的基本概念、数据类型、SQLite基本操作和SQLite3编程;第5章图形界面设计,主要讲解tkinter的功能、布局管理器、常用组件和事件处理;第6章文件操作,主要讲解文件的打开与关闭、文件的读/写和目录与文件。整个基础知识的讲解语言精练,知识点突出,中间穿插大量的实例,易读易学易练。第7、8、9、10、11章分别以猜数字、飞船绕行星旋转、连连看、推箱子和贪吃蛇开发为主线,讲解利用Python开发这些游戏和项目的设计思路、关键技术、设计流程和代码实现。后5个章节的内容由浅入深,环环相扣,理论联系实际,使学生快乐地学会应用Python开发项目。 本书的第1、2章由李满编写,第3、4、5章由席二辉编写,第6、7章由李满和刘金华共同编写,第8、9章由彭建烽编写,第10章由张嘉利编写,第11章由林国宇编写,全书由席二辉、李满统稿和审稿。本书在编写过程中得到了Maalla,Allam、万世明和广州泰迪智能科技有限公司的大力支持,在此表示衷心的感谢! 本书内容基于Python 3编写,所有源代码均在Python 3编程环境下运行通过,课程资源可在https://www.hxedu.com.cn/中获得。 本书为广州工商学院“十三五”教材建设经费资助项目,由广州工商学院联合校企合作单位广州泰迪智能科技有限公司合作编写。 由于编者水平有限,本书在编写过程中难免出现错误和疏漏,诚恳大家批评指正。 编 者? 2022年6月
目 录 第1章 基础知识 1 1.1 Python语言简介 1 1.1.1 认识Python 1 1.1.2 Python的下载与安装 5 1.1.3 开发和运行Python程序 8 1.1.4 Python的开发环境 11 1.1.5 使用pip管理Python扩展库 11 1.1.6 Python扩展库的导入 12 1.2 Anaconda 3开发环境的安装与使用 14 1.2.1 Anaconda 3的下载与安装 14 1.2.2 Spyder的配置与使用 15 1.2.3 Jupyter Notebook 17 1.3 Python语言的编码规范 19 1.3.1 标识符命名规则 19 1.3.2 代码缩进 19 1.3.3 空格与空行 20 1.3.4 注释语句 20 1.3.5 折行处理 21 1.3.6 圆括号 21 1.3.7 保留字 21 1.4 数据类型和变量 22 1.4.1 数据类型 22 1.4.2 变量 26 1.5 运算符和表达式 27 1.5.1 算术运算符 27 1.5.2 表达式 33 1.6 控制结构 34 1.6.1 条件判断语句 34 1.6.2 循环语句 36 1.7 函数与模块 39 1.7.1 函数 39 1.7.2 模块 41 1.8 小结 44 习题1 44 第2章 面向对象 45 2.1 类与对象 45 2.1.1 创建类 45 2.1.2 创建对象 46 2.2 构造与析构方法 46 2.2.1 构造方法 46 2.2.2 析构方法 47 2.3 变量 48 2.3.1 成员变量 48 2.3.2 类变量 49 2.4 方法 50 2.4.1 实例方法 50 2.4.2 类方法 51 2.4.3 静态方法 52 2.5 继承 53 2.5.1 类的继承 53 2.5.2 方法的重写 54 2.5.3 多重继承 55 2.6 多态 56 2.7 小结 57 习题2 57 第3章 多线程 59 3.1 认识线程 59 3.2 创建线程 59 3.2.1 Thread(?)方法 59 3.2.2 继承线程类 60 3.2.3 守护线程 62 3.3 join(?)方法 63 3.4 线程同步 65 3.4.1 认识同步 65 3.4.2 锁 65 3.4.3 条件变量 68 3.5 小结 69 习题3 70 第4章 数据库编程 71 4.1 认识数据库 71 4.2 数据类型 71 4.3 SQLite的基本操作 72 4.3.1 创建 72 4.3.2 插入 73 4.3.3 修改 74 4.3.4 删除 74 4.3.5 查找 75 4.4 SQLite3编程 77 4.4.1 创建数据表 77 4.4.2 数据表的基本操作 78 4.5 小结 80 习题4 80 第5章 图形界面设计 82 5.1 初识tkinter 82 5.2 布局管理器 83 5.2.1 pack布局 83 5.2.2 place布局 83 5.2.3 grid布局 84 5.3 常用组件 85 5.3.1 Button 86 5.3.2 Label 86 5.3.3 Entry 87 5.3.4 Listbox 88 5.3.5 Radiobutton 89 5.3.6 Checkbutton 90 5.3.7 Scale 91 5.3.8 Frame 92 5.3.9 Menu 93 5.4 事件处理 94 5.4.1 command参数 94 5.4.2 bind( )方法 95 5.5 小结 96 习题5 96 第6章 文件操作 97 6.1 文件的打开与关闭 97 6.1.1 打开 97 6.1.2 关闭 98 6.2 文件的读/写 99 6.2.1 文本文件的读/写 99 6.2.2 二进制文件的读/写 101 6.3 目录与文件 102 6.3.1 目录操作 102 6.3.2 文件操作 103 6.4 小结 104 习题6 104 第7章 猜数字 105 7.1 游戏介绍 105 7.2 设计思路 105 7.3 关键技术 106 7.4 游戏界面 110 7.4.1 界面设计 110 7.4.2 判断框 111 7.4.3 对话框 112 7.5 编程实现 112 7.6 小结 114 第8章 飞船绕行星旋转 115 8.1 项目介绍 115 8.2 设计思路 115 8.3 关键技术 116 8.3.1 位图的绘制 116 8.3.2 旋转 116 8.4 界面 117 8.4.1 绘制背景 117 8.4.2 行星 118 8.4.3 飞船 119 8.5 编程实现 120 8.6 小结 123 第9章 连连看 124 9.1 游戏介绍 124 9.2 设计思路 125 9.2.1 方块布局 125 9.2.2 游戏规则 126 9.3 关键技术 127 9.3.1 Canvas对象 128 9.3.2 绘制图形 128 9.4 编程实现 134 9.5 小结 138 第10章 推箱子 139 10.1 游戏介绍 139 10.2 设计思路 140 10.3 关键技术 142 10.3.1 一维数组与二维数组 142 10.3.2 列表复制—深拷贝 146 10.4 编程实现 147 10.5 小结 152 第11章 贪吃蛇 153 11.1 游戏介绍 153 11.2 游戏规则 153 11.3 类的设计 155 11.4 搭建游戏框架 156 11.4.1 pygame模块 156 11.4.2 游戏界面 157 11.4.3 创建食物 158 11.4.4 创建贪吃蛇 160 11.4.5 贪吃蛇吃食物及死亡的判断 162 11.5 编程实现 163 11.6 小结 168 参考文献 169