好好學Python:從零基礎到項目實戰

劉宇宙、劉艷

  • 出版商: 清華大學
  • 出版日期: 2021-05-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • 頁數: 489
  • 裝訂: 平裝
  • ISBN: 7302577226
  • ISBN-13: 9787302577225

下單後立即進貨 (約4週~6週)

  • 好好學Python:從零基礎到項目實戰-preview-1
  • 好好學Python:從零基礎到項目實戰-preview-2
  • 好好學Python:從零基礎到項目實戰-preview-3
好好學Python:從零基礎到項目實戰-preview-1

相關主題

商品描述

本書以Python 3.9為基礎,結合豐富動手練習與項目實戰,通俗易懂地介紹了Python編程與實際開發的重要知識點,內容包括:Python環境構建、數據類型、運算符和表達式、數據結構和控制流、函數、序列、多線程編程、正則表達式、面向對象編程、文件操作、網絡編程、郵件收發、數據庫操作,並提供Python爬蟲、自然語言處理、區塊鏈開發、圖片處理與文件處理項目,各章還安排了程序調試、問題解答、牛刀小試、練習題等內容,以幫助讀者學會處理程序異常,解答學習困惑,鞏固知識,提升開發技能。 本書以生活化場景為對象展開教學,邊講解邊示範,很適合從未有過編程經驗的讀者,本書的內容豐富,技術新穎,涉及知識面較廣,對於想轉行Python編程的讀者也很有參考價值,希望本書可以幫助讀者快速登堂入室,成為編程高手。

作者簡介

劉宇宙,大數據與人工智能開發工程師,從業8年,先後供職於上海海鼎、廣州棒谷、深圳Bello智能科技有限公司等,擔任高級工程師及效率與運維負責人。
先後從事過卡系統研發、雲計算IaaS研發、物聯網研發、網絡爬蟲研發和人工智能研發,對Python有深入研究。
出版暢銷書《Python 3.5從零開始學》(清華大學出版社,2017),長期在*知名IT技術網站CSDN發表原創博文。

目錄大綱

目錄
第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