图书介绍

Python实战编程 从零学PythonPDF|Epub|txt|kindle电子书版本网盘下载

Python实战编程 从零学Python
  • 黑马程序员编著 著
  • 出版社: 北京:中国铁道出版社
  • ISBN:9787113240073
  • 出版时间:2018
  • 标注页数:661页
  • 文件大小:89MB
  • 文件页数:681页
  • 主题词:软件工具-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Python实战编程 从零学PythonPDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 开启Python学习之旅1

1.1 Python的由来1

1.2 Python的特点2

1.2.1 简单易学2

1.2.2 开源2

1.2.3 高级语言2

1.2.4 可移植性2

1.2.5 解释型2

1.2.6 面向对象3

1.2.7 可扩展性和可嵌入性3

1.2.8 丰富的库3

1.2.9 规范的代码3

1.3 Python应用领域3

1.3.1 Web应用开发3

1.3.2 管理操作系统、服务器自动化运行和维护4

1.3.3 科学计算4

1.3.4 桌面软件4

1.3.5 服务器软件(网络软件)4

1.3.6 游戏4

1.3.7 构思实现,产品早期原型和迭代4

1.4 Python版本及解释器5

1.4.1 Python的版本过渡5

1.4.2 Python 2和Python 3的区别6

1.4.3 Python解释器9

1.5 下载和安装Python9

1.5.1 Linux平台9

1.5.2 Windows平台10

1.5.3 Mac平台13

1.6 第一个Python程序——HelloWorld14

1.6.1 Python命令行14

1.6.2 写一段小程序14

1.6.3 脚本14

1.7 运行Python15

1.7.1 命令行上的交互式解释器15

1.7.2 从命令行启动脚本16

1.7.3 增强交互式IPython16

1.7.4 集成开发环境17

1.7.5 PyCharm的下载安装18

1.7.6 PyCharm的使用20

1.8 Python程序执行原理24

1.8.1 编译型语言和解释型语言24

1.8.2 Python是一种解释型语言24

1.9 Python文档25

第2章 Python快速入门26

2.1 程序的输出和输入26

2.1.1 程序的输出26

2.1.2 程序的输入27

2.2 Python注释27

2.2.1 行注释和块注释28

2.2.2 文档字符串28

2.3 代码风格建议28

2.3.1 使用缩进表示语句块28

2.3.2 关于缩进风格29

2.3.3 代码过长的换行29

2.4 标识符和关键字29

2.4.1 标识符29

2.4.2 关键字30

2.5 变量30

2.5.1 变量和赋值30

2.5.2 复用变量名31

2.6 数字类型32

2.7 布尔类型32

2.8 字符串33

2.9 元组和列表33

2.10 字典34

2.11 集合(set)34

2.12 if语句35

2.13 while循环36

2.14 for循环37

2.15 可迭代对象38

2.16 文件读写38

2.17 错误和异常39

2.18 函数40

2.19 类和对象40

2.20 模块41

第3章 数值类型42

3.1 整型42

3.1.1 早期的整型42

3.1.2 Python 3中的整型42

3.1.3 整型的表示方法43

3.1.4 进制转换43

3.2 位运算44

3.2.1 整型存储方式44

3.2.2 按位取反45

3.2.3 按位左移45

3.2.4 按位右移46

3.2.5 按位与47

3.2.6 按位或48

3.2.7 按位异或48

3.3 浮点型48

3.3.1 浮点型的表示方式48

3.3.2 浮点数的取值范围49

3.3.3 浮点数的存储49

3.3.4 高精度浮点数49

3.4 复数类型50

3.4.1 复数类型定义50

3.4.2 复数的特点50

3.4.3 创建复数50

3.4.4 获取复数的实部和虚部51

3.5 布尔类型51

3.6 数字运算51

3.6.1 算术运算符51

3.6.2 赋值运算符53

3.6.3 比较运算符53

3.6.4 逻辑运算符54

3.7 运算符优先级55

3.8 类型转换56

3.8.1 类型转换函数56

3.8.2 类型转换注意事项56

3.8.3 类型转换示例57

3.9 对象和引用57

3.9.1 对象57

3.9.2 引用58

3.9.3 身份运算符59

3.9.4 身份运算符的使用59

第4章 字符串60

4.1 字符串介绍60

4.2 字符串存储方式61

4.2.1 字符串的索引61

4.2.2 根据索引访问值62

4.2.3 字符串是不可变的62

4.3 切片截取字符串63

4.3.1 切片和步长63

4.3.2 切片的默认值64

4.3.3 切片的正反向索引混用64

4.4 特殊字符处理65

4.4.1 字符串的转义65

4.4.2 保持原始字符串66

4.5 字符串的输出和输入66

4.5.1 字符串的格式化输出66

4.5.2 格式化操作的辅助指令67

4.5.3 字符串的输入68

4.6 字符串模板69

4.7 字符串的内建函数70

4.7.1 序列类型操作相关函数70

4.7.2 字符串类型转换相关函数71

4.8 字符串的常见方法72

4.8.1 find方法74

4.8.2 index方法75

4.8.3 replace方法75

4.8.4 split方法75

4.8.5 lower方法76

4.8.6 strip方法76

4.8.7 format方法76

4.9 字符串操作符78

4.9.1 使用比较运算符比较字符串78

4.9.2 使用+运算符连接字符串79

4.9.3 使用成员运算符检查字符串80

第5章 序列81

5.1 认识什么是序列81

5.2 通用序列操作82

5.2.1 索引([])82

5.2.2 切片([i:j])82

5.2.3 步长([i:j:k])83

5.2.4 判断某个元素是否属于序列84

5.2.5 序列相加85

5.2.6 序列与数字相乘85

5.2.7 计算序列长度85

5.2.8 找出序列的最大元素和最小元素85

5.2.9 查找元素在序列中出现的位置86

5.2.10 统计元素在序列中出现的次数86

5.3 可变序列——列表(list)86

5.3.1 什么是列表86

5.3.2 列表的创建方式87

5.3.3 列表操作符88

5.3.4 列表类型相关函数90

5.3.5 列表类型相关方法91

5.4 不可变序列——元组95

5.4.1 元组的创建方式96

5.4.2 元组支持通用序列操作96

5.4.3 单个元素的元组97

5.4.4 有时候元组也“可变”97

5.5 元组是无符号对象的默认类型98

5.6 不同序列的相互转换98

5.7 不可变序列——range99

5.7.1 range介绍99

5.7.2 range支持通用序列操作100

5.7.3 range与列表和元组的比较101

第6章 流程控制102

6.1 if语句102

6.1.1 简单if语句102

6.1.2 条件表达式103

6.1.3 多重条件表达式103

6.1.4 if-else语句104

6.1.5 elif语句104

6.1.6 if嵌套语句106

6.1.7 if语句的缩进107

6.1.8 判断表达式107

6.2 循环语句108

6.2.1 while循环108

6.2.2 while循环嵌套109

6.2.3 死循环110

6.2.4 for语句110

6.2.5 range函数用于for循环111

6.2.6 循环技巧111

6.2.7 迭代器和iter()函数113

6.2.8 列表推导式114

6.3 跳出循环114

6.3.1 break语句114

6.3.2 continue语句115

6.3.3 pass语句116

6.3.4 else语句116

第7章 字典和集合118

7.1 字典类型118

7.1.1 字典的基本概念118

7.1.2 字典是可变的容器119

7.1.3 字典键和值的规范119

7.2 字典的基本操作120

7.2.1 创建字典并为元素赋值120

7.2.2 访问字典中的元素121

7.2.3 遍历字典中的元素122

7.2.4 更新字典中的元素123

7.2.5 删除字典元素和字典123

7.3 字典常用的函数124

7.3.1 通过len函数获取字典元素的数量124

7.3.2 通过hash函数判断某个对象是否能为字典的键124

7.4 字典的内建方法124

7.4.1 copy方法125

7.4.2 get方法126

7.4.3 items方法127

7.4.4 keys方法127

7.4.5 values方法128

7.5 集合类型128

7.5.1 集合的基本概念128

7.5.2 集合的类型129

7.6 集合的基本操作130

7.6.1 集合的创建和赋值130

7.6.2 访问集合中的元素130

7.6.3 更新集合中的元素131

7.6.4 删除集合本身132

7.7 集合操作符133

7.7.1 标准类型的操作符133

7.7.2 集合类型的操作符134

7.7.3 可变集合类型的操作符135

7.8 集合内建方法136

第8章 函数和函数式编程138

8.1 认识函数138

8.2 函数的定义和调用139

8.2.1 函数的定义139

8.2.2 函数的调用139

8.2.3 函数文档说明140

8.2.4 形参和实参141

8.2.5 传递参数值的改变141

8.2.6 return语句141

8.2.7 返回值的类型142

8.3 函数的参数传递143

8.3.1 位置参数传递143

8.3.2 关键字参数传递143

8.3.3 参数默认值144

8.3.4 可变参数144

8.3.5 解包裹145

8.3.6 混合传递方式146

8.4 递归函数147

8.5 函数作为参数传递148

8.6 lambda匿名函数148

8.7 常用函数149

8.7.1 map函数149

8.7.2 filter函数150

8.7.3 reduce函数151

8.8 变量作用域152

8.8.1 全局变量和局部变量152

8.8.2 global和nonlocal关键字153

8.9 闭包155

8.9.1 函数的引用155

8.9.2 什么是闭包156

8.9.3 闭包的使用156

8.10 装饰器157

8.10.1 什么是装饰器157

8.10.2 多个装饰器159

8.10.3 装饰器对有参数函数进行装饰160

8.10.4 装饰器对带有返回值的函数进行装饰162

8.10.5 通用装饰器163

8.10.6 带有参数的装饰器164

8.11 生成器165

8.11.1 什么是生成器165

8.11.2 生成器运行机制166

8.11.3 yield与return167

8.11.4 生成器支持的方法168

8.11.5 生成器应用场景——协程170

8.11.6 生成器是一个迭代器171

8.12 Python标准库——内置函数172

8.12.1 反过头看看172

8.12.2 数字运算相关函数173

8.12.3 类型转换相关函数177

8.12.4 序列操作相关函数179

8.12.5 类、对象、属性相关函数180

8.12.6 编译,执行相关函数183

8.12.7 其他函数186

第9章 文件188

9.1 文件的打开和关闭188

9.1.1 打开文件188

9.1.2 关闭文件188

9.2 文件概述189

9.2.1 路径名189

9.2.2 打开模式189

9.2.3 文件缓冲190

9.2.4 文件的分类191

9.2.5 标准文件191

9.3 文件的读写192

9.3.1 写文件192

9.3.2 读文件192

9.3.3 文件读写位置193

9.4 文件的方法和属性195

9.5 文件遍历195

9.5.1 read()遍历文件195

9.5.2 readline()遍历文件196

9.5.3 readlines()遍历文件197

9.5.4 文件迭代器197

9.5.5 文件迭代器的特点198

9.6 文件备份198

9.7 文件重命名199

9.8 删除文件199

9.9 os模块扩展200

9.9.1 创建文件夹200

9.9.2 删除文件夹200

9.9.3 获取当前目录200

9.9.4 更改默认目录200

9.9.5 获取目录列表201

9.10 文件操作案例——用户登录201

9.10.1 业务逻辑201

9.10.2 相关文件202

9.10.3 模块功能202

9.10.4 功能实现202

9.10.5 功能演示206

第10章 面向对象(上)208

10.1 面向对象的概念208

10.2 类和对象210

10.3 类的定义和使用210

10.3.1 类的定义210

10.3.2 创建对象211

10.3.3 新式类和经典类211

10.4 属性和方法211

10.4.1 类属性211

10.4.2 对象属性212

10.4.3 构造方法和析构方法214

10.4.4 对象方法215

10.4.5 类方法217

10.4.6 静态方法218

10.4.7 保护对象的私有属性219

10.4.8 更便捷地访问私有属性——使用@properry220

第11章 面向对象(下)223

11.1 面向对象的三大特征223

11.2 封装224

11.3 继承224

11.3.1 单继承224

11.3.2 isinstance()和issubclass()函数226

11.3.3 多继承227

11.3.4 重写229

11.3.5 super关键字229

11.4 多态230

11.5 运算符重载231

11.5.1 四则运算重载232

11.5.2 索引和分片重载233

11.5.3 定制对象的字符串形式234

11.6 _new_方法235

11.7 单例模式236

11.8 工厂模式238

第12章 错误和异常240

12.1 错误和异常简介240

12.1.1 异常241

12.1.2 Python常见异常241

12.2 捕获异常243

12.2.1 try-except语句243

12.2.2 获取异常提示信息244

12.2.3 捕获多个异常244

12.2.4 捕获所有异常245

12.2.5 else子句246

12.2.6 finally子句246

12.3 抛出异常247

12.3.1 raise语句247

12.3.2 异常的传递249

12.3.3 assert断言语句250

12.4 自定义异常251

12.5 with语句处理异常253

12.5.1 with语句253

12.5.2 上下文管理器254

12.5.3 自定义上下文管理器255

第13章 模块257

13.1 什么叫模块257

13.2 常用标准模块257

13.2.1 sys模块257

13.2.2 os模块258

13.2.3 os.path模块259

13.2.4 random模块260

13.2.5 time模块260

13.3 导入模块262

13.3.1 import262

13.3.2 from…impor…262

13.3.3 from…import★263

13.4 导入方法比较263

13.5 自制模块263

13.5.1 制作自定义模块263

13.5.2 自定义模块的使用263

13.5.3 模块搜索路径264

13.6 模块属性264

13.6.1 _all_属性264

13.6.2 _name_属性266

13.7 模块导入特性266

13.7.1 导入特性概述266

13.7.2 导入特性详解267

13.8 模块缓存267

13.9 Python中的包268

13.10 包的导入268

13.10.1 import导入268

13.10.2 from…import…导入268

13.10.3 _init_.py文件269

13.11 模块的打包发布269

13.11.1 待发布包结构270

13.11.2 setup.py文件270

13.11.3 模块构建270

13.11.4 模块打包271

13.12 模块安装272

第14章 内存管理273

14.1 内存管理概述273

14.1.1 为什么要进行内存管理273

14.1.2 内存管理的常用机制273

14.2 引用计数机制274

14.2.1 引用计数机制概述274

14.2.2 增加对象的引用275

14.2.3 减少对象的引用276

14.2.4 释放对象占用的内存276

14.3 容器对象引起的循环引用277

14.3.1 容器对象引用对象277

14.3.2 对象之间的循环引用277

14.4 弱引用解决自定义对象的循环引用279

14.4.1 弱引用概述279

14.4.2 弱引用处理循环引用281

14.5 垃圾回收机制281

14.5.1 垃圾回收机制概述282

14.5.2 标记清除技术282

14.5.3 分代回收技术283

14.5.4 gc模块概述284

14.5.5 启动垃圾回收的场景284

14.5.6 gc模块自动回收垃圾285

14.6 内存池机制286

14.6.1 小整数对象池286

14.6.2 字符串的intern机制287

第15章 正则表达式288

15.1 起源与发展288

15.2 正则表达式的定义289

15.3 字符分类289

15.3.1 普通字符289

15.3.2 元字符289

15.3.3 预定义字符集290

15.4 点字符290

15.5 位置匹配290

15.5.1 行头行尾291

15.5.2 单词边界291

15.6 多选结构291

15.7 字符组291

15.7.1 连字符292

15.7.2 排除型字符组292

15.7.3 元字符与字符组292

15.8 重复匹配293

15.8.1 可选模式293

15.8.2 重复模式293

15.9 转义字符293

15.10 子组294

15.10.1 子组的意义294

15.10.2 非捕获子组295

15.11 re模块295

15.12 预编译296

15.13 匹配与搜索296

15.13.1 match()296

15.13.2 search()297

15.14 匹配对象298

15.15 全文匹配299

15.15.1 findall()299

15.15.2 finditer()300

15.16 检索替换300

15.17 文本分割301

15.18 贪婪匹配301

第16章 图形用户界面编程303

16.1 Tkinter概述303

16.1.1 认识Tkinter303

16.1.2 开发第一个Tkinter程序303

16.2 Tkinter组件概述304

16.2.1 Tkinter核心组件304

16.2.2 标准组件属性305

16.2.3 组件的属性设置308

16.3 常用组件介绍309

16.3.1 按钮组件(Button)309

16.3.2 标签组件(Label)310

16.3.3 文本框(Entry)310

16.3.4 多行文本框(Text)311

16.3.5 单选按钮(Radiobutton)312

16.3.6 复选框(Checkbutton)314

16.3.7 列表框(Listbox)315

16.4 菜单316

16.4.1 主菜单316

16.4.2 下拉菜单316

16.4.3 弹出式菜单317

16.5 对话框318

16.5.1 消息对话框(messagebox)318

16.5.2 文件对话框(filedialog)318

16.5.3 颜色选择对话框(colorchooser)319

16.6 画布绘图320

16.7 Tkinter几何布局管理器322

16.7.1 pack几何布局管理器322

16.7.2 grid几何布局管理器323

16.7.3 place几何布局管理器323

16.8 事件处理324

16.8.1 Tkinter中的事件324

16.8.2 事件对象及属性325

16.9 其他GUI327

16.9.1 wxPython327

16.9.2 PyGTK327

16.9.3 PyQt328

16.9.4 JPython328

第17章 多任务编程329

17.1 多任务的实现原理329

17.2 进程介绍330

17.2.1 什么是进程330

17.2.2 进程的状态331

17.3 通过fork()函数创建进程331

17.3.1 使用fork()函数创建子进程332

17.3.2 使用fork()函数创建多个子进程333

17.4 通过Process类创建进程(跨平台)334

17.4.1 通过Process类实例创建进程334

17.4.2 使用join()方法同步进程335

17.4.3 通过Process子类创建子进程337

17.5 进程池批量创建进程338

17.5.1 进程池非阻塞式添加任务338

17.5.2 进程池阻塞式添加任务340

17.6 通过subprocess模块创建进程341

17.6.1 调用call()函数创建子进程342

17.6.2 通过Popen类实例创建子进程342

17.7 通过Queue实现进程间的通信344

17.7.1 全局变量在多个进程中不共享344

17.7.2 使用Queue队列实现进程间通信344

17.8 线程介绍345

17.8.1 什么是线程346

17.8.2 线程的状态346

17.8.3 线程类型346

17.9 创建线程347

17.9.1 使用Thread类实现多线程347

17.9.2 使用Thread子类实现多线程349

17.9.3 调用join()方法阻塞线程349

17.10 解决线程共享资源产生的问题350

17.10.1 线程共享全局变量350

17.10.2 访问全局变量出现数据不同步的问题351

17.10.3 通过互斥锁(Lock)解决数据不同步的问题352

17.10.4 持有多个锁造成死锁的问题353

17.10.5 可重入锁(RLock)的使用355

17.11 线程的同步应用356

17.11.1 通过条件变量(Condition)实现线程同步357

17.11.2 使用队列实现线程同步358

17.12 使用事件(Event)实现线程通信361

17.13 后台线程362

17.14 协程363

17.14.1 协程的优势363

17.14.2 Python 2.x的协程363

17.14.3 Python 3.x的协程364

第18章 网络编程366

18.1 计算机网络概述366

18.2 协议与体系结构367

18.2.1 体系结构367

18.2.2 协议368

18.2.3 数据传输流程369

18.3 网络架构370

18.4 IP地址370

18.4.1 IPv4的分类371

18.4.2 IPv6地址372

18.4.3 子网掩码373

18.5 端口号373

18.6 网络编程概述374

18.7 套接字374

18.8 socket通信流程375

18.8.1 面向连接的通信375

18.8.2 面向非连接的通信376

18.9 socket内建方法376

18.9.1 bind——绑定地址到套接字376

18.9.2 listen——服务器监听客户端的请求377

18.9.3 connect——建立与服务器的连接377

18.9.4 accept——接受客户端的连接377

18.9.5 send/sendto——发送数据378

18.9.6 recv/recvfrom——接收数据378

18.9.7 close——关闭套接字379

18.10 网络编程实例379

18.10.1 UDP聊天室379

18.10.2 TCP数据转换382

18.11 TCP并发服务器384

18.11.1 单进程非阻塞服务器384

18.11.2 多进程并发服务器387

18.11.3 多线程并发服务器389

18.12 I/O多路转接服务器390

18.12.1 select并发服务器390

18.12.2 epoll并发服务器393

第19章 数据库编程397

19.1 MySQL数据库397

19.1.1 下载和安装398

19.1.2 使用MySQLWorkbench408

19.1.3 卸载MySQL409

19.2 SQL语言412

19.3 数据库基本操作412

19.3.1 创建数据库413

19.3.2 删除数据库413

19.4 表的基本操作414

19.4.1 字段类型414

19.4.2 约束415

19.4.3 创建表415

19.4.4 删除表416

19.5 数据的操作417

19.5.1 数据的添加417

19.5.2 数据的更新417

19.5.3 数据的删除418

19.5.4 事务418

19.6 单表查询419

19.6.1 数据查询419

19.6.2 最简单查询420

19.6.3 条件查询420

19.6.4 查询不重复的记录424

19.6.5 聚合查询424

19.6.6 分组查询425

19.6.7 排序426

19.6.8 限制记录数量426

19.6.9 完整的SQL语句427

19.7 多表查询427

19.7.1 内连接(inner join)428

19.7.2 外连接(outer join)428

19.8 MySQL的内置函数429

19.8.1 字符串函数429

19.8.2 数学函数431

19.8.3 日期时间函数432

19.8.4 类型转换函数434

19.9 MySQL与Python交互434

19.9.1 安装PyMySQL435

19.9.2 PyMySQL的常用对象435

19.9.3 PyMySQL示例436

第20章 Web编程438

20.1 什么是Web服务器438

20.2 第一个Web服务器438

20.3 统一资源定位符439

20.4 HTTP概述440

20.5 HTTP消息440

20.5.1 请求结构440

20.5.2 响应结构441

20.5.3 HTTP请求方法441

20.5.4 状态码442

20.6 HTML概述442

20.6.1 静态网页443

20.6.2 CSS简介443

20.6.3 JavaScript简介444

20.7 静态Web服务器445

20.8 WSGI规范448

20.9 WSGI服务器449

20.10 Web服务器452

20.11 基于框架的服务器454

20.11.1 Web应用框架455

20.11.2 基于框架的服务器456

20.11.3 流程分析458

20.11.4 功能展示459

第21章 井字棋460

21.1 游戏简介460

21.1.1 游戏规则460

21.1.2 游戏策略460

21.2 分析与设计461

21.2.1 流程分析462

21.2.2 类的设计463

21.2.3 开发阶段设计463

21.3 新建项目及文件准备464

21.4 棋盘功能实现464

21.4.1 棋盘的数据结构465

21.4.2 初始化棋盘466

21.4.3 显示棋盘466

21.4.4 在棋盘上落子467

21.4.5 判断平局468

21.4.6 判断胜利469

21.4.7 重置棋盘469

21.5 玩家功能实现470

21.5.1 初始化玩家470

21.5.2 玩家在棋盘落子471

21.6 人人对战功能实现472

21.6.1 游戏的初始化472

21.6.2 随机决定先手玩家472

21.6.3 一轮完整对局473

21.6.4 循环对局474

21.7 人机对战——计算机随机落子475

21.7.1 派生AIPlayer子类475

21.7.2 修改游戏类中计算机玩家的类型476

21.8 人机对战——计算机智能落子476

21.8.1 计算机落子策略476

21.8.2 预判胜利476

21.8.3 必胜落子和必救落子478

21.8.4 评估子力价值478

21.9 项目体会480

第22章 贪吃蛇481

22.1 游戏简介481

22.1.1 简易版贪吃蛇481

22.1.2 游戏规则482

22.2 类和模块的设计483

22.2.1 类的设计483

22.2.2 模块的设计484

22.3 游戏准备工作484

22.3.1 新建项目484

22.3.2 安装pygame库485

22.4 游戏框架搭建487

22.4.1 pygame初始化和退出487

22.4.2 创建游戏主窗口488

22.4.3 增加游戏循环和游戏时钟489

22.4.4 填充窗口的背景颜色490

22.4.5 绘制得分文本492

22.4.6 重置得分文本的位置494

22.4.7 游戏事件监听498

22.4.8 绘制食物图形501

22.4.9 定时更新食物的位置504

22.5 贪吃蛇功能实现505

22.5.1 贪吃蛇类的设计505

22.5.2 定义贪吃蛇类507

22.5.3 添加蛇身体508

22.5.4 绘制和移动身体510

22.5.5 改变贪吃蛇的方向512

22.5.6 贪吃蛇吃食物513

22.5.7 贪吃蛇的死亡515

22.6 项目体会517

第23章 飞机大战518

23.1 游戏简介518

23.1.1 经典飞机大战518

23.1.2 增强版飞机大战游戏特点519

23.1.3 增强版飞机大战游戏设计519

23.1.4 增强版飞机大战典型场景522

23.2 项目准备524

23.2.1 类设计524

23.2.2 模块设计525

23.2.3 创建项目和项目文件结构526

23.3 游戏框架的设计与搭建526

23.3.1 游戏类的设计526

23.3.2 游戏框架搭建528

23.4 精灵和精灵组530

23.4.1 介绍Sprite和Group530

23.4.2 派生游戏精灵子类532

23.4.3 绘制游戏背景和英雄飞机533

23.4.4 实现游戏背景连续滚动535

23.5 指示器面板537

23.5.1 指示器面板类的设计538

23.5.2 指示器面板类的准备539

23.5.3 使用精灵实现文本标签542

23.5.4 显示和修改游戏数据544

23.5.5 保存和显示最好成绩548

23.5.6 显示游戏状态550

23.5.7 游戏结束后重置面板552

23.6 逐帧动画和飞机类553

23.6.1 逐帧动画的基本实现554

23.6.2 飞机类的设计与实现557

23.6.3 派生敌机子类561

23.6.4 派生英雄飞机子类567

23.7 碰撞检测573

23.7.1 pygame中的碰撞检测573

23.7.2 敌机撞毁英雄576

23.7.3 英雄发射子弹579

23.7.4 英雄拾取道具582

23.8 音乐和音效586

23.8.1 pygame播放音乐和音效的方式586

23.8.2 设计并实现音乐播放器类587

23.9 项目体会591

第24章 多人聊天室592

24.1 项目介绍592

24.1.1 项目概述592

24.1.2 项目预览593

24.1.3 项目的总体流程594

24.2 服务器端程序设计595

24.2.1 业务流程设计595

24.2.2 响应协议设计596

24.2.3 类和模块设计597

24.2.4 数据库设计597

24.3 服务器端程序实现598

24.3.1 创建项目和文件结构598

24.3.2 实现ServerSocket类598

24.3.3 实现SocketWrapper类599

24.3.4 实现DB类599

24.3.5 实现ResponseProtocol类600

24.3.6 实现Server类——主框架搭建601

24.3.7 实现Server类——请求处理602

24.3.8 实现Server类——请求协议与处理方法的对应关系603

24.3.9 启动服务器端程序606

24.4 客户端程序设计606

24.4.1 业务流程设计606

24.4.2 请求协议设计607

24.4.3 类和模块设计607

24.5 客户端程序实现608

24.5.1 创建项目和文件结构608

24.5.2 搭建登录窗口608

24.5.3 搭建聊天窗口611

24.5.4 实现RequestProtocol类613

24.5.5 实现ClientSocket类614

24.5.6 实现Client类——业务框架搭建614

24.5.7 实现Client类——响应处理方法615

24.5.8 实现Client类——窗口按钮单击事件处理618

24.5.9 启动客户器端程序619

24.6 项目体会619

第25章 大型购物网站——天天生鲜620

25.1 Django框架介绍620

25.1.1 使用Django建立网站的优势620

25.1.2 Django框架的结构621

25.2 天天生鲜项目展示621

25.2.1 首页商品展示页面621

25.2.2 商品分类展示页面622

25.2.3 商品详情页面623

25.2.4 购物车页面623

25.2.5 订单提交页面624

25.2.6 订单提交成功页面624

25.3 项目创建625

25.3.1 搭建开发环境625

25.3.2 创建项目625

25.3.3 创建应用626

25.3.4 开发服务器627

25.4 创建模型627

25.4.1 ORM概述627

25.4.2 数据库配置628

25.4.3 定义模型类629

25.4.4 创建迁移文件632

25.4.5 执行迁移633

25.4.6 数据库操作634

25.5 创建视图638

25.5.1 定义视图638

25.5.2 配置URLconf638

25.6 模板渲染639

25.6.1 配置模板640

25.6.2 使用模板640

25.6.3 给模板传值641

25.6.4 静态文件642

25.7 Cookie643

25.8 首页页面功能实现644

25.8.1 创建视图函数644

25.8.2 创建模板文件645

25.8.3 配置访问路径648

25.9 商品详细页面功能实现648

25.9.1 创建视图函数648

25.9.2 创建模板文件649

25.9.3 配置访问路径650

25.9.4 实现商品购买功能650

25.10 商品分类页面功能实现651

25.10.1 创建视图函数651

25.10.2 创建模板文件653

25.10.3 配置访问路径654

25.11 购物车页面功能实现654

25.11.1 创建视图函数655

25.11.2 创建模板文件655

25.11.3 配置访问路径656

25.11.4 实现删除商品的功能656

25.12 订单提交页面功能实现657

25.12.1 创建视图函数657

25.12.2 创建模板文件657

25.12.3 配置访问路径659

25.12.4 实现提交订单功能659

25.13 订单提交成功页面功能实现660

25.13.1 创建视图函数660

25.13.2 配置访问路径661

25.14 项目体会661

热门推荐