本書(shū)是國(guó)家一流專業(yè)(數(shù)字媒體技術(shù)、網(wǎng)絡(luò)工程、廣播電視工程)課程 “Python程序設(shè)計(jì)”的指定教材,浙江省普通本科高!笆奈濉敝攸c(diǎn)立項(xiàng)建設(shè)教材。本書(shū)通過(guò)系統(tǒng)化的內(nèi)容講解,使學(xué)生在系統(tǒng)化掌握Python基礎(chǔ)知識(shí)的同時(shí),真正掌握實(shí)際問(wèn)題的設(shè)計(jì)與實(shí)現(xiàn),有效提高分析和解決問(wèn)題的能力。本書(shū)主要介紹了計(jì)算機(jī)和編程基礎(chǔ)、Python基礎(chǔ)、程序基本結(jié)構(gòu)、函數(shù)和模塊、結(jié)構(gòu)化數(shù)據(jù)類型、類和對(duì)象、文件與異常、數(shù)據(jù)分析和可視化、Tkinter實(shí)現(xiàn)GUI編程、游戲編程、Python函數(shù)式編程等。本書(shū)既可作為高等學(xué)校計(jì)算機(jī)程序設(shè)計(jì)課程的教材,也可供社會(huì)各類工程技術(shù)與科研人員閱讀參考。
王雪梅,浙江傳媒學(xué)院副教授,浙江省一流課程數(shù)據(jù)結(jié)構(gòu)與算法負(fù)責(zé)教師。曾出版《數(shù)據(jù)庫(kù)系統(tǒng)及應(yīng)用》 《數(shù)據(jù)庫(kù)系統(tǒng)及應(yīng)用實(shí)驗(yàn)案例與習(xí)題解答》《魯棒融合估計(jì)理論及應(yīng)用》 等書(shū)。
第1部分 基 礎(chǔ) 篇
第1章 計(jì)算機(jī)和編程基礎(chǔ)1
1.1 計(jì)算機(jī)的基本概念1
1.1.1 硬件2
1.1.2 軟件3
1.2 數(shù)據(jù)存儲(chǔ)3
1.2.1 存儲(chǔ)自然數(shù)4
1.2.2 存儲(chǔ)字符7
1.2.3 存儲(chǔ)負(fù)整數(shù)8
1.2.4 存儲(chǔ)實(shí)數(shù)12
1.3 程序設(shè)計(jì)語(yǔ)言15
1.3.1 自然語(yǔ)言15
1.3.2 程序語(yǔ)言15
1.4 使用高級(jí)程序語(yǔ)言編寫(xiě)和運(yùn)行程序17
1.4.1 編譯型語(yǔ)言17
1.4.2 解釋型語(yǔ)言18
1.4.3 半編譯半解釋型語(yǔ)言19
1.5 程序設(shè)計(jì)范式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的教學(xué)實(shí)踐23
1.7.1 現(xiàn)狀和趨勢(shì)23
1.7.2 為什么學(xué)習(xí)Python25
1.8 小結(jié)26
習(xí)題126
第2章 Python基礎(chǔ)28
2.1 Python數(shù)據(jù)類型28
2.2 Python基本運(yùn)算30
2.2.1 算術(shù)運(yùn)算30
2.2.2 關(guān)系運(yùn)算31
2.2.3 邏輯運(yùn)算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 應(yīng)用實(shí)例36
2.4.4 格式化輸出37
2.5 注釋41
2.6 turtle簡(jiǎn)介41
2.6.1 模塊導(dǎo)入41
2.6.2 畫(huà)布配置42
2.6.3 畫(huà)筆操作42
2.6.4 turtle中的繪圖命令42
2.6.5 turtle繪圖實(shí)例44
2.7 小結(jié)46
習(xí)題246
第3章 程序基本結(jié)構(gòu)49
3.1 程序控制結(jié)構(gòu)49
3.2 選擇結(jié)構(gòu)50
3.2.1 單分支選擇結(jié)構(gòu)50
3.2.2 雙分支選擇結(jié)構(gòu)if…else語(yǔ)句51
3.2.3 多分支選擇結(jié)構(gòu)if…elif…else語(yǔ)句52
3.2.4 嵌套選擇語(yǔ)句53
3.3 循環(huán)結(jié)構(gòu)54
3.3.1 for循環(huán)54
3.3.2 while循環(huán)57
3.3.3 嵌套循環(huán)語(yǔ)句59
3.3.4 跳轉(zhuǎn)語(yǔ)句60
3.4 程序控制結(jié)構(gòu)在turtle中的應(yīng)用61
3.5 小結(jié)63
習(xí)題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 關(guān)鍵字參數(shù)68
4.2.3 默認(rèn)參數(shù)69
4.2.4 不定長(zhǎng)參數(shù)*69
4.2.5 命名關(guān)鍵字參數(shù)70
4.3 返回值71
4.4 結(jié)構(gòu)化程序設(shè)計(jì)72
4.4.1 自頂向下的問(wèn)題分析方法73
4.4.2 模塊化設(shè)計(jì)73
4.4.3 結(jié)構(gòu)化編碼74
4.5 全局變量和局部變量74
4.6 內(nèi)置函數(shù)76
4.7 模塊77
4.7.1 導(dǎo)入模塊和函數(shù)77
4.7.2 指定別名78
4.7.3 自定義模塊78
4.7.4 常用模塊介紹79
4.8 遞歸81
4.8.1 遞歸的兩個(gè)過(guò)程82
4.8.2 編寫(xiě)遞歸函數(shù)83
4.9 函數(shù)在turtle中的應(yīng)用85
4.10 小結(jié)91
習(xí)題491
第5章 結(jié)構(gòu)化數(shù)據(jù)類型95
5.1 字符串95
5.1.1 字符串字面量95
5.1.2 字符串的基本操作96
5.1.3 字符串方法100
5.1.4 字符串應(yīng)用103
5.2 列表106
5.2.1 列表簡(jiǎn)介106
5.2.2 列表運(yùn)算106
5.2.3 列表方法110
5.2.4 復(fù)制列表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 序列的異同和轉(zhuǎn)換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 集合運(yùn)算130
5.6 一些簡(jiǎn)單算法和數(shù)據(jù)結(jié)構(gòu)131
5.6.1 搜索算法131
5.6.2 排序算法133
5.7 列表在turtle中的應(yīng)用135
5.8 小結(jié)139
習(xí)題5140
第6章 類和對(duì)象146
6.1 面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)146
6.2 類146
6.2.1 類的定義146
6.2.2 封裝149
6.3 模塊151
6.3.1 模塊及導(dǎo)入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 小結(jié)160
習(xí)題6160
第7章 文件和異常162
7.1 文件162
7.1.1 文件對(duì)象162
7.1.2 文件讀/寫(xiě)操作163
7.1.3 使用循環(huán)處理文件173
7.2 異常175
7.2.1 異常的基本概念175
7.2.2 使用try/except語(yǔ)句捕獲異常178
7.2.3 else語(yǔ)句182
7.2.4 finally語(yǔ)句183
7.2.5 with語(yǔ)句183
7.3 小結(jié)184
習(xí)題7185
第2部分 應(yīng) 用 篇
第8章 數(shù)據(jù)分析和可視化188
8.1 使用Matplotlib繪制圖表189
8.1.1 安裝Matplotlib并導(dǎo)入189
8.1.2 Figure和Axes對(duì)象189
8.1.3 Matplotlib中的一些函數(shù)和屬性190
8.2 繪制折線圖195
8.3 繪制直方圖199
8.4 繪制柱狀圖200
8.5 繪制餅圖203
8.6 繪制散點(diǎn)圖206
8.7 子圖207
8.7.1 多個(gè)繪圖區(qū)域208
8.7.2 在其他子圖中顯示子圖211
8.7.3 子圖網(wǎng)格212
8.8 數(shù)據(jù)圖表案例應(yīng)用216
8.9 小結(jié)222
習(xí)題8223
第9章 用Tkinter模塊實(shí)現(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的應(yīng)用235
9.5 小結(jié)239
習(xí)題9239
第10章 游戲編程241
10.1 安裝Pygame241
10.2 Pygame基礎(chǔ)知識(shí)244
10.2.1 坐標(biāo)244
10.2.2 顏色244
10.2.3 字體245
10.3 第一個(gè)Pygame程序:簡(jiǎn)單的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 鍵盤(pán)事件249
10.4.2 鼠標(biāo)事件250
10.4.3 設(shè)備輪詢251
10.5 基本繪制函數(shù)251
10.6 位圖和動(dòng)畫(huà)255
10.6.1 位圖255
10.6.2 動(dòng)畫(huà)256
10.7 播放音頻259
10.8 Cat Catcher游戲?qū)崿F(xiàn)260
10.9 小結(jié)263
第11章 Python函數(shù)式編程264
11.1 函數(shù)式編程概述264
11.1.1 什么是函數(shù)式編程264
11.1.2 函數(shù)是一等公民266
11.1.3 Lambda表達(dá)式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ù)總結(jié)283
11.4 特殊折疊函數(shù)283
11.5 迭代器285
11.5.1 迭代器概述286
11.5.2 可迭代對(duì)象與迭代器的關(guān)系288
11.5.3 迭代器的特點(diǎn)290
11.6 生成器292
11.6.1 生成器函數(shù)292
11.6.2 生成器表達(dá)式295
11.7 裝飾器296
11.7.1 如何使用裝飾器297
11.7.2 裝飾器背后的實(shí)現(xiàn)原理298
11.7.3 多個(gè)裝飾器的執(zhí)行順序300
11.8 命令式編程與函數(shù)式編程的對(duì)比303
11.9 小結(jié)303
附錄A ASCII碼表304
附錄B Python編程環(huán)境的安裝305
附錄C 集成開(kāi)發(fā)環(huán)境IDE305