Python 程序設計基礎及實踐, 2/e (慕課版)
郭煒
相關主題
商品描述
本書是一部零基礎、重實踐、大廣度的Python編程教材。本書覆蓋面廣,包括電腦基礎知識、Python的基本要素和語法、Python生態、正則表達式、數據分析和可視化、網絡爬蟲、面向對象程序設計、tkinter圖形界面程序設計等內容。本書還專門用一章的篇幅講述基礎算法,讓讀者初學編程就牢固建立計算思維。
本書大量例題、習題來自北京大學開放在線程序評測平臺OpenJudge,例題、習題與當下許多軟件和互聯網公司招聘面試題的形式相同,非常適合作為強調就業導向、強調高標準實踐性的教學改革的配套教材。
本書可作為高等職業院校電腦類專業的教材。文、理、藝術等各類專業的零基礎學生可以學習並掌握本書90%的內容;餘下10%的內容則面向電腦類專業學生。即便是已經學過其他程序設計語言的電腦類專業學生,也可以通過本書來快速掌握Python語法及各種庫的使用方法。
本書配套電子資料十分豐富,包括程序源代碼、重點難點講解視頻、課程講義、習題答案等。此外,作者在中國大學MOOC(慕課)開設的“實用Python程序設計”課程,提供了覆蓋全書90%內容的視頻講解。
作者簡介
郭炜 北京大学信息学院教师,担任北京大学ACM国际大学生程序设计竞赛队教练多年,曾6次为ACM-ICPC亚洲区预选赛命题,是国内为该项赛事主持命题次数最多的人。 研究方向:计算机辅助教学,北京角斗士软件技术有限公司创始人,开发多款英语学习软件。
目錄大綱
第1章 電腦基礎常識
1.1 信息在電腦中的表示和存儲 1
1.1.1 用0和1表示信息 1
1.1.2 二進制和十六進制 2
1.2 電腦程序設計語言 4
1.2.1 機器語言 4
1.2.2 匯編語言 5
1.2.3 高級語言 5
1.2.4 Python簡史 6
1.3 習題 7
第2章 Python語言的基本要素
2.1 Python開發環境的搭建 8
2.2 Python的語句 9
2.3 註釋 10
2.4 常量 11
2.5 變量 12
2.6 賦值語句 12
2.7 Python數據類型 14
2.8 字符串簡介 14
2.8.1 字符串的基本概念 14
2.8.2 字符串的下標 15
2.8.3 連接字符串 15
2.8.4 用“in”“not in”判斷子串 16
2.8.5 字符串和數值的轉換 16
2.9 輸入和輸出 17
2.9.1 輸出語句print 17
2.9.2 輸入語句input 17
2.9.3 輸出格式控制 19
2.10 列表簡介 20
2.10.1 列表的基本概念 20
2.10.2 字符串分割成列表 20
2.11 常見語法錯誤排查 21
2.12 OpenJudge做題指南及例題講解 21
2.13 習題 25
第3章 基本運算和條件分支語句
3.1 算術運算 26
3.2 關系運算和bool類型 28
3.3 邏輯運算 30
3.4 運算符的優先級 31
3.5 條件分支語句 32
3.6 條件分支語句例題 33
3.7 習題 40
第4章 循環語句
4.1 for循環語句 41
4.2 break語句和continue語句 45
4.3 多重循環 45
4.4 while循環語句 48
4.5 異常處理 51
4.6 循環綜合例題 53
4.7 調試程序的方法 57
4.8 習題 58
第5章 函數
5.1 函數概述 59
5.2 全局變量和局部變量 62
★5.3 參數個數可變的函數 63
5.4 函數參數的默認值 64
5.5 Python的庫函數 64
5.6 lambda表達式 65
★★5.7 高階函數和閉包 66
★★★5.8 生成器 67
5.9 習題 69
第6章 遞歸
6.1 遞歸的基本概念 70
6.2 先做一步再遞歸:上臺階問題 72
★6.3 問題分解:漢諾塔問題 72
★★6.4 遞歸替代循環:N皇後問題 76
★6.5 遞歸繪制分形圖案:繪制雪花曲線 78
6.6 習題 81
第7章 復雜數據類型
7.1 Python變量的指針本質 82
7.2 字符串詳解 85
7.2.1 轉義字符 85
7.2.2 三單引號和三雙引號字符串 86
7.2.3 在字符串中使用編碼代替字符 87
7.2.4 字符串的切片 88
7.2.5 字符串的分割 88
7.2.6 字符串的成員函數 89
7.2.7 字符串的格式化 91
7.2.8 f-string 92
7.3 元組 92
7.3.1 元組的基本概念 92
7.3.2 元組的操作 94
7.4 列表詳解 95
7.4.1 列表基礎用法 95
7.4.2 列表的成員函數 98
7.4.3 列表的排序 99
7.4.4 列表的映射和過濾 103
7.4.5 列表生成式 104
★7.4.6 二維列表 105
★7.4.7 列表的復制 107
7.4.8 列表、元組和字符串的互相轉換 109
7.5 字典 109
7.5.1 字典的基本概念 109
7.5.2 字典的函數 111
7.5.3 字典例題:單詞出現頻率統計 112
7.6 集合 113
7.7 自定義數據類型:類 116
7.8 習題 118
第8章 計算思維
8.1 電腦的本質 121
8.2 電腦解決問題的基本方法—窮舉 122
★8.3 程序或算法的時間復雜度 123
8.4 有序就能找得快 127
8.5 習題 128
第9章 文件讀寫
9.1 概述 129
9.2 文本文件的編碼 130
9.3 讀寫文本文件 132
9.4 文件的相對路徑和絕對路徑 134
★9.5 文件夾的操作 135
★9.6 命令行參數 137
★9.7 文本文件處理綜合實例 138
9.8 數據交換文件格式csv 141
★9.9 數據交換字符串格式JSON 142
★★★9.10 字節流和字符串的互相轉換 143
★★★9.11 二進制文件的讀寫 144
9.12 習題 148
第10章 正則表達式
10.1 功能字符和字符組合 149
10.2 查找匹配的子串 153
10.3 邊界符號 155
10.4 匹配選項 156
10.5 分組 157
10.6 '|' 的用法 160
★★10.7 替換匹配的子串 161
10.8 貪婪匹配和懶惰匹配 162
★★★10.9 條件匹配 163
★★★10.10 斷言 164
10.11 字符串分割 167
10.12 應用實例 167
10.13 習題 168
第11章 玩轉Python生態
11.1 Python庫的安裝、導入和使用 170
11.2 日期和時間庫datetime 172
11.3 隨機庫random 173
★11.4 用OpenPyXL庫處理Excel文檔 174
★★★11.5 SQLite3數據庫編程 179
11.5.1 數據庫的結構 179
11.5.2 SQL數據庫查詢語句 179
11.6 jieba分詞庫 184
★★11.7 圖像處理庫PIL 186
11.7.1 圖像的基本變換 187
11.7.2 圖像的裁剪 188
11.7.3 圖像的素描化 189
★★★11.7.4 給圖像添加水印 190
★★★11.7.5 照片的exif信息及在圖像上繪圖和寫字 192
11.8 多模塊程序設計 194
11.9 Python程序的打包分發 197
11.10 習題 197
第12章 數據分析和可視化
12.1 多維數組庫NumPy 199
12.2 數據分析庫pandas 203
12.3 用Matplotlib繪制統計圖 210
12.3.1 繪制柱狀圖 210
12.3.2 繪制折線圖和散點圖 214
12.3.3 繪制餅圖 215
12.3.4 繪制熱力圖 215
12.3.5 繪制雷達圖 216
12.3.6 繪制面積圖 218
★★12.3.7 多子圖繪圖 219
12.4 習題 220
第13章 網絡爬蟲
13.1 基礎爬蟲四步走 221
13.2 網頁獲取三招式 225
13.3 用BeautifulSoup分析網頁 228
13.4 用pyppeteer爬取JavaScript動態生成的網頁 232
★★13.5 用pyppeteer爬取需要登錄的網站 233
★★★13.6 用pyppeteer+requests編寫快速爬蟲 239
13.7 如何對付反爬蟲措施 241
13.8 習題 241
第14章 面向對象程序設計入門
14.1 結構化程序設計和麵向對象程序設計 242
14.2 Python中的類 243
14.3 對象的比較 245
14.4 輸出對象 246
14.5 繼承和派生 247
14.6 靜態屬性和靜態方法 249
14.7 對象作為集合元素或字典的鍵 250
第15章 tkinter圖形界面程序設計
15.1 控件概述 253
15.2 圖形界面的佈局 255
15.3 為控件綁定狀態變量和事件響應函數 258
15.4 綜合示例—Python火鍋店點菜系統 262
15.5 對話框 266
15.6 菜單和多行編輯框示例 270
★★15.7 在圖形界面中用Matplotlib繪制統計圖和顯示圖像 272
★★15.8 Notebook、PanedWindow和TreeView控件 275
15.9 習題 276