目 录 | CONTENTS 第1章 搭建Python开发环境 001 1.1 Python概述 001 1.2 如何选择Python的版本 002 1.3 搭建Python的编程环境 002 1.3.1 在Windows下安装Python 002 1.3.2 在Linux下安装Python 003 1.4 第一行人工智能代码 004 1.5 选择Python开发工具 005 1.5.1 Python自带的IDLE 005 1.5.2 第三方开发工具PyCharm 006 1.6 新手疑难问题解答 007 1.7 实战训练 008 第2章 成为大牛前的必备知识 009 2.1 Python的语法特点 009 2.1.1 代码注释 009 2.1.2 代码缩进 010 2.1.3 编码规范 010 2.1.4 换行问题 011 2.2 标识符与保留字 012 2.3 变量 012 2.4 基本数据类型 014 2.4.1 数字类型 014 2.4.2 字符串类型 016 2.4.3 数据类型的相互转换 017 2.5 运算符和优先级 018 2.5.1 算术运算符 018 2.5.2 比较运算符 019 2.5.3 赋值运算符 019 2.5.4 逻辑运算符 020 2.5.5 位运算符 021 2.5.6 成员运算符 022 2.5.7 身份运算符 022 2.5.8 运算符的优先级 023 2.6 Python的输入和输出 025 2.6.1 input()函数 025 2.6.2 print ()函数 025 2.7 新手疑难问题解答 027 2.8 实战训练 027 第3章 程序的控制结构 029 3.1 程序结构 029 3.2 选择结构与语句 030 3.2.1 最简单的if语句 030 3.2.2 if…else语句 030 3.2.3 if嵌套 032 3.2.4 多重条件判断 032 3.3 布尔表达式 033 3.4 循环控制语句 034 3.4.1 while语句 035 3.4.2 for语句 036 3.4.3 continue语句和else语句 037 3.4.4 pass语句 038 3.5 新手疑难问题解答 038 3.6 实战训练 040 第4章 序列的应用技能 041 4.1 认识序列 041 4.1.1 索引 041 4.1.2 切片 042 4.1.3 序列相加 042 4.1.4 序列相乘 042 4.1.5 检查序列中的成员 042 4.2 集合类型 043 4.2.1 认识集合类型 043 4.2.2 集合类型的常见操作 043 4.3 列表类型 045 4.3.1 认识列表类型 045 4.3.2 列表的常见操作 046 4.3.3 列表的内置函数和方法 046 4.4 元组类型 050 4.4.1 认识元组 050 4.4.2 元组的常用操作 050 4.4.3 元组的内置函数 051 4.5 字典类型 052 4.5.1 认识字典类型 052 4.5.2 字典的常用操作 053 4.5.3 字典的内置函数和方法 053 4.6 新手疑难问题解答 055 4.7 实战训练 056 第5章 字符串与正则表达式 057 5.1 字符串的常用操作 057 5.1.1 拼接字符串 057 5.1.2 计算字符串的长度 058 5.1.3 截取字符串 058 5.1.4 分割和合并字符串 059 5.1.5 检索字符串 060 5.1.6 字母的大小写转换 062 5.1.7 删除字符串中的空格和特殊字符 062 5.1.8 使用Python的转义字符 063 5.2 字符串的编码转换 065 5.3 正则表达式和re模块 066 5.3.1 正则表达式的特定字符 066 5.3.2 re模块的方法 067 5.4 格式化字符串 070 5.5 新手疑难问题解答 071 5.6 实战训练 072 第6章 精通函数 073 6.1 创建和调用函数 073 6.1.1 创建函数 073 6.1.2 调用函数 074 6.2 参数传递 074 6.2.1 形参和实参 074 6.2.2 必需参数 076 6.2.3 关键字参数 077 6.2.4 默认参数 077 6.2.5 可变参数 078 6.3 返回值 079 6.4 变量作用域 080 6.5 匿名函数 081 6.6 新手疑难问题解答 081 6.7 实战训练 082 第7章 面向对象程序设计 084 7.1 认识面向对象 084 7.1.1 什么是对象 084 7.1.2 面向对象的特点 085 7.1.3 什么是类 086 7.2 定义类 086 7.3 类的构造方法和内置属性 086 7.4 类例 088 7.4.1 创建类例 088 7.4.2 类例的内置属性 090 7.5 类的继承 090 7.6 类的多态 093 7.7 类的封装 095 7.8 Python的优势—垃圾回收机制 096 7.9 新手疑难问题解答 097 7.10 实战训练 098 第8章 模块和包 099 8.1 模块概述 099 8.2 自定义模块 099 8.2.1 创建模块 100 8.2.2 使用import语句导入模块 100 8.2.3 模块搜索目录 101 8.3 以主程序的形式执行 104 8.4 Python中的包 105 8.4.1 Python程序的包结构 105 8.4.2 创建包 105 8.4.3 使用包 105 8.5 引用其他模块 106 8.5.1 导入和使用标准模块 107 8.5.2 下载和安装第三方模块 108 8.6 将模块制作成安装包 111 8.7 新手疑难问题解答 112 8.8 实战训练 113 第9章 异常处理和程序调试 115 9.1 异常概述 115 9.2 使用语句处理异常 116 9.2.1 try…except语句 117 9.2.2 try…except…else语句 118 9.2.3 try…except…finally语句 119 9.2.4 使用raise语句抛出异常 119 9.2.5 使用pass语句忽略异常 120 9.3 raise语句的高级应用 121 9.3.1 结束解释器的运行 121 9.3.2 跳出嵌套循环 121 9.4 异常类的例 122 9.5 自定义异常 123 9.6 程序调试 124 9.6.1 使用assert语句调试程序 124 9.6.2 使用IDLE工具进行程序调试 125 9.7 新手疑难问题解答 129 9.8 实战训练 131 第10章 操作文件和目录 132 10.1 打开和关闭文件 132 10.1.1 创建和打开文件 132 10.1.2 关闭文件 134 10.1.3 打开文件时使用with语句 135 10.2 写入和修改文件 135 10.2.1 将字符串写入文件 135 10.2.2 写入多行writelines() 136 10.2.3 修改文件内容 137 10.3 读取文件 138 10.3.1 读取文件read()方法 138 10.3.2 设置文件当前位置seek()方法 138 10.3.3 逐行读取readline()方法 139 10.3.4 读取全部行readlines()方法 139 10.4 目录操作 140 10.4.1 熟悉os和os.path模块 140 10.4.2 路径 141 10.4.3 判断路径是否存在 142 10.4.4 创建目录 143 10.4.5 遍历目录 145 10.4.6 删除目录 145 10.5 文件的高级操作 146 10.5.1 获取文件的基本信息 146 10.5.2 重命名文件 147 10.5.3 删除文件 148 10.5.4 返回文件读取的当前位置 148 10.6 刷新文件 149 10.7 新手疑难问题解答 150 10.8 实战训练 150 第11章 Python操作数据库 152 11.1 操作二进制文件 152 11.2 使用SQLite 153 11.2.1 创建数据库文件 153 11.2.2 插入数据 154 11.2.3 查询数据 155 11.2.4 更新数据 157 11.2.5 删除数据 157 11.3 操作MySQL数据库 158 11.3.1 下载和安装MySQL 8.0 158 11.3.2 安装PyMySQL 166 11.3.3 连接MySQL数据库 167 11.3.4 创建数据表 169 11.3.5 插入数据 169 11.3.6 查询数据 170 11.3.7 更新数据 170 11.3.8 删除数据 171 11.4 新手疑难问题解答 171 11.5 实战训练 172 第12章 GUI编程 174 12.1 使用tkinter创建GUI程序 174 12.2 熟悉tkinter的控件 175 12.3 常用控件的使用方法 179 12.3.1 Button控件 179 12.3.2 Canvas控件 180 12.3.3 Checkbutton控件 184 12.3.4 Entry控件 185 12.3.5 Label控件 186 12.3.6 Listbox控件 187 12.3.7 Menu控件 188 12.3.8 Message控件 192 12.3.9 Radiobutton控件 192 12.3.10 Scale控件 194 12.3.11 Scrollbar控件 196 12.3.12 Text控件 197 12.4 tkinter的事件 199 12.4.1 事件的属性 199 12.4.2 事件绑定方法 200 12.4.3 鼠标事件 200 12.4.4 键盘事件 202 12.4.5 系统协议 203 12.5 布局管理器 204 12.5.1 pack()方法 205 12.5.2 grid()方法 206 12.5.3 place()方法 207 12.6 对话框 208 12.6.1 messagebox模块 208 12.6.2 filedialog模块 210 12.6.3 colorchooser模块 211 12.7 新手疑难问题解答 213 12.8 实战训练 213 第13章 精通Python的高级技术 215 13.1 使用Pillow处理图像 215 13.1.1 加载图像文件 215 13.1.2 图像文件的属性 217 13.1.3 复制与粘贴图像 218 13.1.4 图像的几何转换 220 13.1.5 存储图像文件 221 13.2 语音的处理 221 13.2.1 winsound模块 221 13.2.2 sndhdr模块 223 13.2.3 wave模块 224 13.2.4 aifc模块 226 13.3 科学计算 227 13.3.1 下载和安装numpy模块 227 13.3.2 array对象 228 13.3.3 ufunc对象 229 13.4 线程 230 13.4.1 Python多线程 230 13.4.2 _thread模块 230 13.4.3 threading模块 231 13.5 新手疑难问题解答 232 13.6 实战训练 233 第14章 Web网站编程 234 14.1 XML编程基础 234 14.1.1 XPath简介 234 14.1.2 XSLT简介 235 14.2 XML语法基础 235 14.2.1 XML的基本应用 236 14.2.2 XML文档组成和声明 237 14.2.3 XML元素介绍 238 14.3 Python解析XML 240 14.3.1 使用SAX解析XML 241 14.3.2 使用DOM解析XML 243 14.4 XDR数据交换格式 244 14.5 JSON数据解析 247 14.6 Python解析HTML 249 14.7 新手疑难问题解答 254 14.8 实战训练 254 第15章 Pygame游戏项目——经典飞机大战 258 15.1 安装Pygame 258 15.2 使用Pygame模块 259 15.3 飞机大战游戏分析 262 15.4 封装飞机大战游戏中的类 262 15.4.1 角色类 262 15.4.2 敌机类 264 15.4.3 子弹类 265 15.4.4 按钮类 265 15.5 飞机大战游戏的具体开发步骤 266 15.5.1 绘制界面 266 15.5.2 消息处理事件 267 15.5.3 角色绘制与操控 268 15.5.4 处理声音 270 15.5.5 僚机处理 270 15.5.6 动态显示得分 272 15.5.7 增加敌机 273 15.5.8 射击处理 274 15.5.9 爆炸效果 275 15.5.10 处理游戏分数 276 15.5.11 游戏最终逻辑实现 276 15.6 游戏效果演示 279 第16章 网络爬虫项目——豆瓣图书爬虫和检索 281 16.1 什么是网络爬虫 281 16.2 网络爬虫的常用技术 282 16.2.1 网络请求技术 282 16.2.2 请求headers处理 284 16.2.3 网络超时问题 286 16.2.4 代理服务 286 16.3 豆瓣读书爬虫项目分析 287 16.4 环境配置 287 16.4.1 下载并安装模块文件 287 16.4.2 检查模块文件是否安装成功 290 16.5 具体功能实现 290 16.5.1 爬取图书数据 290 16.5.2 检索图书信息 292 16.6 项目测试 293 第17章 大数据分析项目——绘制电视剧人物关系图 294 17.1 项目分析 294 17.2 配置环境 295 17.3 具体功能实现 297 17.4 项目测试 301 第18章 人工智能项目——自动文本摘要 303 18.1 项目分析 303 18.2 配置环境 304 18.3 具体功能实现 306 18.4 项目测试 310