好好学Python:从零基础到项目实战

好好学Python:从零基础到项目实战"

作者:刘宇宙、刘艳
ISBN:9787302577225
定价:¥119
字数:千字
页数:
出版时间:2021.05.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书以Python 3.9为基础,结合丰富动手练习与项目实战,通俗易懂地介绍了Python编程与实际开发的重要知识点,内容包括:Python环境构建、数据类型、运算符和表达式、数据结构和控制流、函数、序列、多线程编程、正则表达式、面向对象编程、文件操作、网络编程、邮件收发、数据库操作,并提供Python爬虫、自然语言处理、区块链开发、图片处理与文件处理项目,各章还安排了程序调试、问题解答、牛刀小试、练习题等内容,以帮助读者学会处理程序异常,解答学习困惑,巩固知识,提升开发技能。

本书以生活化场景为对象展开教学,边讲解边示范,很适合从未有过编程经验的读者,本书的内容丰富,技术新颖,涉及知识面较广,对于想转行Python编程的读者也很有参考价值,希望本书可以帮助读者快速登堂入室,成为编程高手。

前言

前    言

什么是Python,为什么要使用它?

Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。

Python是一种使你在编程时能够保持自己风格的程序设计语言,Python可以使用清晰易懂的程序来实现想要的功能。如果你之前没有任何编程经历,那么既简单又强大的Python就是你入门的完美选择。

伴随着国家对人工智能发展的全面支持与鼓励,国际上对人工智能的重视以及国家教育部将Python加入高考科目,使得Python在中国的使用范围迅速扩大;另外,随着区块链、人工智能、大数据、云计算等技术的迅速崛起,市场对Python人才的需求让长期沉默的Python语言一下子备受众人的关注,本书可以说是应运而生。本书是以Python 3.9版本为基础编写而成的,对于想入手学习编程和想了解Python 3.9新特性的读者,推荐阅读本书。

本书的特色

本书专门针对Python新手量身定做,是编者学习和使用Python开发过程中的体会和经验总结,涵盖实际开发中重要的知识点,内容详尽,代码可读性及可操作性强。

本书主要介绍Python语言的类型和对象、操作符和表达式、编程结构和控制流、函数、序列、多线程、正则表达式、面向对象编程、文件操作、网络编程、邮件收发、数据库操作,并精心设计了Python爬虫、自然语言处理、区块链开发、图片处理和文件处理项目,各章还安排了程序调试、问题解答、牛刀小试等内容,以帮助读者学会处理程序异常,解决学习中的困惑,巩固知识,提高实战技能。

本书的一个特色是,以生活场景为对象,使用通俗易懂的描述和丰富的示例代码,边讲边示范,使读者学起来很轻松,充分感受到学习Python编程的乐趣和魅力。

本书的内容

本书共分22章,各章内容安排如下:

第1章主要介绍Python的起源、应用场合、前景以及Python 3的一些新特性。

第2章主要介绍Python的基础知识,帮助读者认识什么是程序、常量和变量、运算符和表达式以及字符串等,为后续学习相关内容做铺垫。

第3章重点介绍列表和元组。

第4章重点介绍字符串的格式化、分割、搜索等方法。

第5章介绍字典和集合。

第6章从import语句开始,逐步深入介绍条件语句、循环语句以及列表等一些更深层次的语句。

第7章主要介绍函数,函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。

第8章主要介绍Python面向对象编程的特性,Python从设计之初就是一门面向对象语言,它提供一些语言特性支持面向对象编程。

第9章将带领读者学习如何处理各种异常,以及创建和自定义异常。

第10章将具体讲解Python中日期和时间的使用。

第11章主要介绍正则表达式的基本使用。

第12章主要介绍如何使用Python在硬盘上创建、读取和保存文件。

第13章主要介绍Python中的多线程编程。

第14章主要介绍如何使用Python语言发送和接收邮件。

第15章重点介绍Python在网络编程方面的特性。

第16章重点介绍Python的图形化编程—GUI编程。

第17章重点介绍在Python 3中使用PyMySQL连接数据库,并实现简单的增、删、改、查。

第18章根据前面所学的内容讲解一个网络爬虫的实战项目。

第19章结合爬虫、分词、词频统计等知识点实现自然语言的分词和词频统计。

第20章以当下很火的区块链做一个完整的Python实现。

第21章迎合当前比较火热的计算机视觉领域,引入图片处理的一些基本知识点。

第22章讲解不同格式文件的读写,包括TXT、CSV、JSON、Word、XML等文件。

教学视频与源代码下载

为方便读者学习本书,本书还免费提供了入门教学视频和源代码,读者扫描以下二维码即可下载观看学习和上机演练。

                

如果读者在下载过程中遇到问题,可以发邮件至bootsaga@126.com,邮件标题为:“好好学Python:从零基础到项目实战”或加入本书公众号“图格图书”,获取更多学习资源。

读者对象

? 从未有过编程经验的Python初学者。

? 想转行学习Python和了解Python 3.9新特性的程序员。

? Python网课、培训机构、大专院校的学生。

在本书交稿之际,感谢清华大学出版社的王金柱编辑,在本书编写的过程中,王编辑给予了很多指导和修改意见。感谢家人和朋友给予的安静写作环境,让笔者不被更多琐事打扰,专心于写作。感谢你们,没有你们的帮助与关心,本书不能如期完成。

由于编者水平所限,书中难免存在不尽如人意之处,敬请广大读者和业界专家不吝指教。

                                                                 刘宇宙

                                                              2021年1月

目录

目    录

第1章  开始Python之旅 1

1.1  Python的起源 1

1.2  Python的应用场合 2

1.3  Python 3.9的新特性 4

1.4  如何学习Python 5

1.5  构建Python开发环境 6

1.5.1  在Windows系统中安装Python 6

1.5.2  在Linux、UNIX系统和Mac中安装Python 13

1.5.3  其他版本 13

1.6  从Hello World开始 13

1.7  调试 14

1.8  答疑解惑 16

1.9  课后思考与练习 16

第2章  Python编程基础 17

2.1  认识程序 17

2.1.1  程序 17

2.1.2  调试 18

2.1.3  语法错误—南辕北辙 19

2.1.4  运行错误—突然停止 19

2.1.5  语义错误—答非所问 19

2.2  数据类型 20

2.2.1  整型 20

2.2.2  浮点型 22

2.2.3  复数 23

2.2.4  数据类型转换 24

2.2.5  常量 24

2.3  变量和关键字 25

2.3.1  变量 25

2.3.2  变量名称 29

2.3.3  Python关键字 30

2.4  语句 30

2.5  表达式 32

2.6  运算符和操作对象 33

2.6.1  什么是运算符和操作对象 33

2.6.2  算术运算符 33

2.6.3  比较运算符 34

2.6.4  赋值运算符 36

2.6.5  位运算符 37

2.6.6  逻辑运算符 38

2.6.7  成员运算符 39

2.6.8  身份运算符 39

2.6.9  运算符的优先级 40

2.7  字符串操作 42

2.8  注释 45

2.9  牛刀小试—九九乘法表逆实现 46

2.10  调试 47

2.11  答疑解惑 47

2.12  课后思考与练习 48

第3章  列表和元组 49

3.1  通用序列操作 50

3.1.1  索引 50

3.1.2  分片 52

3.1.3  序列相加 56

3.1.4  乘法 57

3.1.5  成员资格 58

3.1.6  长度、最小值和最大值 59

3.2  列表 59

3.2.1  更新列表 60

3.2.2  嵌套列表 66

3.2.3  列表方法 67

3.3  元组 77

3.3.1  tuple()函数 78

3.3.2  元组的基本操作 78

3.3.3  元组内置函数 80

3.4  列表与元组的区别 81

3.5  牛刀小试——实现杨辉三角 83

3.6  调试 84

3.7  答疑解惑 85

3.8  课后思考与练习 85

第4章  字符串 87

4.1  字符串的简单操作 87

4.2  字符串格式化 89

4.2.1  经典的字符串格式化符号—百分号(%) 89

4.2.2  元组的字符串格式化 91

4.2.3  format字符串格式化 94

4.2.4  f字符串格式化 95

4.2.5  f-string字符串格式化 96

4.3  字符串方法 97

4.3.1  split()方法 97

4.3.2  strip()方法 98

4.3.3  join()方法 98

4.3.4  find()方法 99

4.3.5  lower()方法 100

4.3.6  upper()方法 101

4.3.7  replace()方法 102

4.3.8  swapcase()方法 103

4.3.9  translate()方法 103

4.3.10  移除前缀和后缀方法 104

4.4  牛刀小试—变形金刚 105

4.5  调试 106

4.6  答疑解惑 107

4.7  课后思考与练习 107

第5章  字典和集合 108

5.1  字典的使用 108

5.2  创建和使用字典 109

5.2.1  dict()函数 110

5.2.2  字典的基本操作 111

5.2.3  字典和列表比较 113

5.3  字典方法 114

5.3.1  get()方法 114

5.3.2  keys()方法 115

5.3.3  values()方法 116

5.3.4  key in dict方法 116

5.3.5  update()方法 117

5.3.6  clear()方法 117

5.3.7  copy()方法 118

5.3.8  fromkeys()方法 119

5.3.9  items()方法 120

5.3.10  setdefault()方法 120

5.4  字典合并与更新运算符 121

5.5  集合 122

5.5.1  创建集合 123

5.5.2  集合方法 124

5.6  牛刀小试——字典合并与排序 125

5.7  调试 126

5.8  答疑解惑 126

5.9  课后思考与练习 127

第6章  条件、循环和其他语句 128

6.1  使用文本编辑器 128

6.2  import的使用 130

6.2.1  import语句 130

6.2.2  使用逗号输出 133

6.3  别样的赋值 134

6.3.1  序列解包 134

6.3.2  链式赋值 135

6.3.3  增量赋值 136

6.4  语句块 136

6.5  条件语句 137

6.5.1  布尔变量的作用 137

6.5.2  if语句 138

6.5.3  else子句 139

6.5.4  elif子句 140

6.5.5  嵌套代码块 140

6.5.6  更多操作 141

6.5.7  断言 143

6.6  循环 144

6.6.1  while循环 144

6.6.2  for循环 145

6.6.3  循环遍历字典元素 147

6.6.4  迭代工具 148

6.6.5  跳出循环 149

6.6.6  循环中的else子句 152

6.7  pass语句 153

6.8  牛刀小试(1)——猜字游戏编写 154

6.9  牛刀小试(2)——平方数 155

6.10  Python程序调试 156

6.11  答疑解惑 156

6.12  课后思考与练习 157

第7章  函数 158

7.1  调用函数 158

7.2  定义函数 160

7.3  函数的参数 163

7.3.1  必须参数 163

7.3.2  关键字参数 164

7.3.3  默认参数 165

7.3.4  可变参数 168

7.3.5  组合参数 169

7.3.6  仅通过位置指定的参数 170

7.4  执行流程 172

7.5  形参和实参 172

7.6  变量的作用域 173

7.6.1  局部变量 173

7.6.2  全局变量 175

7.7  有返回值和无返回值函数 177

7.8  为什么要引入函数 178

7.9  返回函数 179

7.10  递归函数 181

7.11  匿名函数 184

7.12  偏函数 186

7.13  牛刀小试(1)——经典排序之快速排序实现 187

7.14  牛刀小试(2)——时间装饰器 189

7.15  调试 190

7.16  答疑解惑 190

7.17  课后思考与练习 191

第8章  面向对象编程 192

8.1  理解面向对象编程 192

8.2  类的定义与使用 193

8.2.1  类的定义 193

8.2.2  类的使用 194

8.3  深入类 195

8.3.1  类的构造方法 195

8.3.2  类的访问权限 199

8.4  继承 204

8.5  多态 207

8.6  封装 210

8.7  多重继承 211

8.8  获取对象信息 214

8.9  类的专有方法 216

8.10  牛刀小试(1)——出行建议 221

8.11  牛刀小试(2)——判断一棵树是否为二叉搜索树 223

8.12  调试 224

8.13  答疑解惑 225

8.14  课后思考与练习 225

第9章  异常处理 227

9.1  什么是异常 227

9.2  异常处理 228

9.3  抛出异常 229

9.4  捕捉多个异常 230

9.5  使用一个块捕捉多个异常 231

9.6  捕捉对象 232

9.7  全捕捉 232

9.8  异常中的else 233

9.9  自定义异常 234

9.10  finally子句 235

9.11  异常和函数 236

9.12  牛刀小试——正常数和异常数 237

9.13  Bug的由来 239

9.14  课后思考与练习 239

第10章  日期和时间 241

10.1  日期和时间 241

10.1.1  时间戳 241

10.1.2  时间格式化符号 242

10.1.3  struct_time元组 243

10.2  time模块 243

10.2.1  time()函数 243

10.2.2  strftime()函数 245

10.2.3  strptime()函数 245

10.2.4  localtime()函数 246

10.2.5  sleep()函数 246

10.2.6  gmtime()函数 247

10.2.7  mktime()函数 247

10.2.8  asctime()函数 248

10.2.9  ctime()函数 248

10.2.10  三种时间格式转化 249

10.3  datetime模块 249

10.4  日历模块 254

10.5  牛刀小试——时间大杂烩 255

10.6  调试 260

10.7  课后思考与练习 260

第11章  正则表达式 261

11.1  认识正则表达式 261

11.2  re模块 263

11.2.1  re.match函数 263

11.2.2  re.search方法 264

11.2.3  re.match与re.search的区别 264

11.3  贪婪模式和非贪婪模式 265

11.4  替换 266

11.5  编译 267

11.6  牛刀小试(1)——匹配比较 267

11.7  牛刀小试(2)——文本解析 268

11.8  课后思考与练习 270

第12章  文件操作 271

12.1  打开文件 271

12.1.1  文件模式 273

12.1.2  缓存 273

12.2  基本文件方法 274

12.2.1  读和写 274

12.2.2  读写行 277

12.2.3  关闭文件 278

12.2.4  文件重命名 279

12.2.5  删除文件 280

12.3  对文件内容进行迭代 280

12.3.1  按字节处理 280

12.3.2  按行操作 281

12.3.3  使用fileinput实现懒加载式迭代 282

12.3.4  文件迭代器 282

12.4  StringIO函数 282

12.5  序列化与反序列化 283

12.5.1  一般序列化与反序列化 283

12.5.2  JSON序列化与反序列化 284

12.6  牛刀小试——批量更改文件名 286

12.7  调试 287

12.8  答疑解惑 288

12.9  课后思考与练习 288

第13章  多线程编程 290

13.1  线程和进程 290

13.1.1  进程 290

13.1.2  线程 291

13.1.3  多线程与多进程 291

13.2  使用线程 292

13.2.1  全局解释器锁 292

13.2.2  退出线程 293

13.2.3  Python的线程模块 293

13.3  _thread模块 293

13.4  threading模块与Thread类 296

13.4.1  threading模块 296

13.4.2  Thread类 296

13.5  线程同步 301

13.6  线程优先级队列 303

13.7  线程与进程比较 306

13.7.1  线程切换 306

13.7.2  计算密集型与IO密集型 307

13.7.3  异步IO 307

13.8  牛刀小试——多线程简单爬虫 308

13.9  调试 309

13.10  答疑解惑 309

13.11  课后思考与练习 310

第14章  发送和接收电子邮件 311

14.1  电子邮件介绍 311

14.2  发送邮件 313

14.2.1  SMTP发送邮件 313

14.2.2  发送HTML格式的邮件 316

14.2.3  发送带附件的邮件 317

14.2.4  发送图片 318

14.2.5  同时支持HTML和Plain格式 319

14.2.6  加密SMTP 321

14.3  POP3接收邮件 322

14.3.1  POP3下载邮件 322

14.3.2  解析邮件 323

14.4  牛刀小试——邮件发送通用化 325

14.5  调试 328

14.6  答疑解惑 329

14.7  课后思考与练习 329

第15章  网络编程 330

15.1  初识网络编程 330

15.2  TCP/IP简介 330

15.3  网络设计模块 331

15.3.1  socket简介 331

15.3.2  socket模块 332

15.3.3  socket对象(内建)方法 333

15.4  TCP编程 335

15.4.1  客户端编程 335

15.4.2  服务器编程 337

15.5  UDP编程 341

15.6  urllib模块 344

15.6.1  GET请求 344

15.6.2  POST请求 345

15.7  牛刀小试——模拟浏览器 347

15.8  调试 347

15.9  答疑解惑 348

15.10  课后思考与练习 348

第16章  GUI编程 349

16.1  GUI简介 349

16.1.1  常用GUI库简介 349

16.1.2  安装tkinter 350

16.2  概念介绍 350

16.2.1  窗口和控件 350

16.2.2  事件驱动处理 351

16.2.3  布局管理器 351

16.3  tkinter的控件 351

16.3.1  Button控件 352

16.3.2  Checkbutton控件 353

16.3.3  Label控件 355

16.3.4  Text控件 356

16.3.5  Menu控件 357

16.4  tkinter组合控件 359

16.5  牛刀小试——计算器开发 361

16.6  调试 366

16.7  答疑解惑 367

16.8  课后思考与练习 367

第17章  操作数据库 368

17.1  数据库介绍 368

17.2  Python数据库API 369

17.2.1  全局变量 369

17.2.2  异常 370

17.2.3  连接和游标 370

17.2.4  类型 372

17.3  数据库操作 372

17.3.1  数据库连接 372

17.3.2  创建数据库表 373

17.3.3  数据库插入 375

17.3.4  数据库查询 376

17.3.5  数据库更新 377

17.3.6  数据库删除 378

17.4  事务 379

17.5  调试 380

17.6  答疑解惑 381

17.7  课后思考与练习 381

第18章  网络爬虫项目 382

18.1  了解爬虫 382

18.2  爬虫的原理 383

18.3  爬虫常用的几种技巧 383

18.3.1  基本方法 384

18.3.2  使用代理服务器 384

18.3.3  Cookie处理 384

18.3.4  伪装成浏览器 385

18.3.5  登录 385

18.4  爬虫示例——抓取豆瓣电影Top250影评数据 386

18.4.1  确定URL格式 386

18.4.2  页面抓取 386

18.4.3  提取相关信息 387

18.4.4  写入文件 389

18.4.5  完善代码 389

18.5  项目小结 392

第19章  自然语言分词与词频统计项目 393

19.1  概念介绍 393

19.1.1  SQLAlchemy简介 393

19.1.2  pyecharts简介 394

19.1.3  jieba分词库简介 394

19.1.4  BeautifulSoup库简介 394

19.2  库的安装与使用 394

19.2.1  SQLAlchemy的安装与使用 394

19.2.2  pyecharts的安装与使用 396

19.2.3  jieba分词库的安装与使用 396

19.2.4  BeautifulSoup的安装与使用 397

19.3  分词与词频统计实战 398

19.3.1  整体结构设计 398

19.3.2  数据结构设计 399

19.3.3  数据的爬取与保存 400

19.3.4  制定关键词库 402

19.3.5  词频统计与图表生成 402

19.4  分词与词频统计完整代码实现与结果查看 404

19.5  项目小结 413

第20章  区块链项目 414

20.1  区块链简介 414

20.1.1  区块链的定义 414

20.1.2  区块链的特点 415

20.1.3  区块链应用行业及领域 415

20.2   区块链代码结构设计 415

20.2.1  环境准备 415

20.2.2  代码结构设计 415

20.3  区块链具体逻辑实现 418

20.3.1  块结构 418

20.3.2  加入交易 418

20.3.3  创建新块 419

20.3.4  工作量证明的理解 420

20.3.5  工作量证明的实现 421

20.4  API接口层开发 422

20.4.1  发送交易 422

20.4.2  挖矿 422

20.4.3  返回整个区块链 423

20.5  运行区块链 424

20.6  分布式实现 425

20.6.1  注册节点 426

20.6.2  实现共识算法 426

20.7  完整项目代码与执行 429

20.8  项目小结 443

第21章  图片处理项目 444

21.1  图片处理基本库简介 444

21.2  读取图片大小 447

21.3  图片完好性检测 449

21.4  相同图片检测 451

21.5  项目小结 457

第22章  不同格式文件处理 458

22.1  TXT文件读写 458

22.2  CSV文件读写 462

22.3  XLSX文件读写 465

22.3.1  使用xlrd模块读取Excel数据 466

22.3.2  使用openpyxl模块写数据 468

22.4  JSON文件读写 469

22.5  Word文件读写 471

22.6  XML文件读写 475

22.7  读取CSV文件数据并插入MySQL数据库 477

22.8  项目小结 484

附录A 485

作者简介

编辑推荐

如果你从未接触过编程,或想入手学习Python编程,我强烈推荐你看这本书,因为这是一本完全可以让你看懂并学会的编程书,同时还可以让你得到意外的收获。我认为这本书的主要特色和优点有如下几个:

1. 场景化教学,看得懂,学得会

这是一本面向初学者的Python编程书,为使读者能够看懂、学会,编者使用了通俗易懂的语言和丰富的代码示例,并借助生活场景进行教学,一些看起来复杂的问题也尽可能以简单的形式展现出来,多了些生动,少了些枯燥,不仅学习起来轻松愉快,而且能够充分感受到Python的魅力。

2. 想读者所想,贴心的内容设计,真正解决学习中的困惑

学编程唯动手练习才能见到成效,本书在内容设计上特别重视讲练结合,注重实践,不仅精心设计了大量示例代码,还在各章穿插了项目演练——牛刀小试,以培养读者的程序设计能力。自学编程往往会遇到很多困惑,半途而废并不鲜见,考虑到这一点,编者还特别设计了程序调试、答疑解惑、思考与练习等主题,助力读者少走弯路,快速上手。

3. 技术新颖的项目实战,拓展解决实际问题的思路

本书还设计了爬虫项目、自然语言处理项目、区块链开发项目、图片处理项目和文件处理项目,这些项目都是当前Python应用中的热点。通过项目实践,既可以提升技能,解决实际问题,又能了解热点前沿技术,可谓一举多得。

4. 丰富的编程练习题,实例源代码与教学视频

为便于读者高效掌握本书内容,本书精心设计了200多道练习题,并提供了全书实例的源代码,以便于读者巩固学习成果和上机演练。此外,还额外附赠Python入门教学视频课,读者扫描本书提供的二维码即可以下载学习,大幅提高学习效率。

作者寄语

刘宇宙,大数据与人工智能开发工程师,从业8年,先后供职于上海海鼎、广州棒谷、深圳Bello智能科技有限公司等,担任高级工程师及效率与运维负责人。先后从事过卡系统研发、云计算IaaS研发、物联网研发、网络爬虫研发和人工智能研发,对Python有深入研究。出版

畅销书《Python 3.5从零开始学》(清华大学出版社,2017),长期在国内知名IT技术网站CSDN发表原创博文。

电子资料

www.luweidong.cn

下一个