本書是國家一流專業(yè)(數(shù)字媒體技術、網(wǎng)絡工程、廣播電視工程)課程 “Python程序設計”的指定教材,浙江省普通本科高!笆奈濉敝攸c立項建設教材。本書通過系統(tǒng)化的內(nèi)容講解,使學生在系統(tǒng)化掌握Python基礎知識的同時,真正掌握實際問題的設計與實現(xiàn),有效提高分析和解決問題的能力。本書主要介紹了計算機和編程基礎、Python基礎、程序基本結構、函數(shù)和模塊、結構化數(shù)據(jù)類型、類和對象、文件與異常、數(shù)據(jù)分析和可視化、Tkinter實現(xiàn)GUI編程、游戲編程、Python函數(shù)式編程等。本書既可作為高等學校計算機程序設計課程的教材,也可供社會各類工程技術與科研人員閱讀參考。
王雪梅,浙江傳媒學院副教授,浙江省一流課程數(shù)據(jù)結構與算法負責教師。曾出版《數(shù)據(jù)庫系統(tǒng)及應用》 《數(shù)據(jù)庫系統(tǒng)及應用實驗案例與習題解答》《魯棒融合估計理論及應用》 等書。
第1部分 基 礎 篇
第1章 計算機和編程基礎1
1.1 計算機的基本概念1
1.1.1 硬件2
1.1.2 軟件3
1.2 數(shù)據(jù)存儲3
1.2.1 存儲自然數(shù)4
1.2.2 存儲字符7
1.2.3 存儲負整數(shù)8
1.2.4 存儲實數(shù)12
1.3 程序設計語言15
1.3.1 自然語言15
1.3.2 程序語言15
1.4 使用高級程序語言編寫和運行程序17
1.4.1 編譯型語言17
1.4.2 解釋型語言18
1.4.3 半編譯半解釋型語言19
1.5 程序設計范式19
1.5.1 命令式范式20
1.5.2 聲明式范式21
1.6 Python的前世今生21
1.6.1 Python的起源21
1.6.2 Python的誕生22
1.7 Python的教學實踐23
1.7.1 現(xiàn)狀和趨勢23
1.7.2 為什么學習Python25
1.8 小結26
習題126
第2章 Python基礎28
2.1 Python數(shù)據(jù)類型28
2.2 Python基本運算30
2.2.1 算術運算30
2.2.2 關系運算31
2.2.3 邏輯運算31
2.3 常量和變量32
2.3.1 常量32
2.3.2 變量32
2.4 輸入/輸出及處理33
2.4.1 print()函數(shù)顯示輸出33
2.4.2 input()函數(shù)接收輸入35
2.4.3 應用實例36
2.4.4 格式化輸出37
2.5 注釋41
2.6 turtle簡介41
2.6.1 模塊導入41
2.6.2 畫布配置42
2.6.3 畫筆操作42
2.6.4 turtle中的繪圖命令42
2.6.5 turtle繪圖實例44
2.7 小結46
習題246
第3章 程序基本結構49
3.1 程序控制結構49
3.2 選擇結構50
3.2.1 單分支選擇結構50
3.2.2 雙分支選擇結構if…else語句51
3.2.3 多分支選擇結構if…elif…else語句52
3.2.4 嵌套選擇語句53
3.3 循環(huán)結構54
3.3.1 for循環(huán)54
3.3.2 while循環(huán)57
3.3.3 嵌套循環(huán)語句59
3.3.4 跳轉語句60
3.4 程序控制結構在turtle中的應用61
3.5 小結63
習題363
第4章 函數(shù)和模塊66
4.1 函數(shù)的基本概念66
4.1.1 函數(shù)的定義66
4.1.2 函數(shù)的調(diào)用67
4.2 參數(shù)傳遞68
4.2.1 位置參數(shù)68
4.2.2 關鍵字參數(shù)68
4.2.3 默認參數(shù)69
4.2.4 不定長參數(shù)*69
4.2.5 命名關鍵字參數(shù)70
4.3 返回值71
4.4 結構化程序設計72
4.4.1 自頂向下的問題分析方法73
4.4.2 模塊化設計73
4.4.3 結構化編碼74
4.5 全局變量和局部變量74
4.6 內(nèi)置函數(shù)76
4.7 模塊77
4.7.1 導入模塊和函數(shù)77
4.7.2 指定別名78
4.7.3 自定義模塊78
4.7.4 常用模塊介紹79
4.8 遞歸81
4.8.1 遞歸的兩個過程82
4.8.2 編寫遞歸函數(shù)83
4.9 函數(shù)在turtle中的應用85
4.10 小結91
習題491
第5章 結構化數(shù)據(jù)類型95
5.1 字符串95
5.1.1 字符串字面量95
5.1.2 字符串的基本操作96
5.1.3 字符串方法100
5.1.4 字符串應用103
5.2 列表106
5.2.1 列表簡介106
5.2.2 列表運算106
5.2.3 列表方法110
5.2.4 復制列表112
5.2.5 列表和函數(shù)114
5.2.6 二維列表117
5.3 元組120
5.3.1 元組與列表的區(qū)別120
5.3.2 元組的使用120
5.3.3 序列的異同和轉換121
5.4 字典122
5.4.1 創(chuàng)建字典123
5.4.2 字典操作123
5.4.3 常用字典方法125
5.5 集合129
5.5.1 創(chuàng)建集合129
5.5.2 集合操作130
5.5.3 集合運算130
5.6 一些簡單算法和數(shù)據(jù)結構131
5.6.1 搜索算法131
5.6.2 排序算法133
5.7 列表在turtle中的應用135
5.8 小結139
習題5140
第6章 類和對象146
6.1 面向過程和面向對象程序設計146
6.2 類146
6.2.1 類的定義146
6.2.2 封裝149
6.3 模塊151
6.3.1 模塊及導入151
6.3.2 __str__()方法153
6.4 繼承和多態(tài)153
6.4.1 繼承153
6.4.2 多態(tài)155
6.5 綜合案例157
6.6 小結160
習題6160
第7章 文件和異常162
7.1 文件162
7.1.1 文件對象162
7.1.2 文件讀/寫操作163
7.1.3 使用循環(huán)處理文件173
7.2 異常175
7.2.1 異常的基本概念175
7.2.2 使用try/except語句捕獲異常178
7.2.3 else語句182
7.2.4 finally語句183
7.2.5 with語句183
7.3 小結184
習題7185
第2部分 應 用 篇
第8章 數(shù)據(jù)分析和可視化188
8.1 使用Matplotlib繪制圖表189
8.1.1 安裝Matplotlib并導入189
8.1.2 Figure和Axes對象189
8.1.3 Matplotlib中的一些函數(shù)和屬性190
8.2 繪制折線圖195
8.3 繪制直方圖199
8.4 繪制柱狀圖200
8.5 繪制餅圖203
8.6 繪制散點圖206
8.7 子圖207
8.7.1 多個繪圖區(qū)域208
8.7.2 在其他子圖中顯示子圖211
8.7.3 子圖網(wǎng)格212
8.8 數(shù)據(jù)圖表案例應用216
8.9 小結222
習題8223
第9章 用Tkinter模塊實現(xiàn)GUI編程224
9.1 Tkinter模塊和GUI224
9.2 Tkinter模塊的常用控件225
9.2.1 Label控件225
9.2.2 Button控件227
9.2.3 Frame控件228
9.2.4 Entry控件229
9.2.5 Radiobutton控件和Checkbutton控件231
9.3 Canvas組件233
9.4 Tkinter GUI的應用235
9.5 小結239
習題9239
第10章 游戲編程241
10.1 安裝Pygame241
10.2 Pygame基礎知識244
10.2.1 坐標244
10.2.2 顏色244
10.2.3 字體245
10.3 第一個Pygame程序:簡單的Pie游戲245
10.3.1 使用Pygame246
10.3.2 初始化并創(chuàng)建窗口246
10.3.3 打印文本246
10.3.4 事件循環(huán)247
10.4 事件處理249
10.4.1 鍵盤事件249
10.4.2 鼠標事件250
10.4.3 設備輪詢251
10.5 基本繪制函數(shù)251
10.6 位圖和動畫255
10.6.1 位圖255
10.6.2 動畫256
10.7 播放音頻259
10.8 Cat Catcher游戲實現(xiàn)260
10.9 小結263
第11章 Python函數(shù)式編程264
11.1 函數(shù)式編程概述264
11.1.1 什么是函數(shù)式編程264
11.1.2 函數(shù)是一等公民266
11.1.3 Lambda表達式267
11.1.4 柯里化函數(shù)269
11.1.5 閉包272
11.2 高階函數(shù)276
11.2.1 高階函數(shù)map()276
11.2.2 高階函數(shù)filter()278
11.3 折疊函數(shù)280
11.3.1 折疊函數(shù)reduce()281
11.3.2 用折疊函數(shù)定義其他函數(shù)283
11.3.3 折疊函數(shù)總結283
11.4 特殊折疊函數(shù)283
11.5 迭代器285
11.5.1 迭代器概述286
11.5.2 可迭代對象與迭代器的關系288
11.5.3 迭代器的特點290
11.6 生成器292
11.6.1 生成器函數(shù)292
11.6.2 生成器表達式295
11.7 裝飾器296
11.7.1 如何使用裝飾器297
11.7.2 裝飾器背后的實現(xiàn)原理298
11.7.3 多個裝飾器的執(zhí)行順序300
11.8 命令式編程與函數(shù)式編程的對比303
11.9 小結303
附錄A ASCII碼表304
附錄B Python編程環(huán)境的安裝305
附錄C 集成開發(fā)環(huán)境IDE305