Python程序設計基礎
王靜紅 傅志斌
相關主題
商品描述
本書以Python知識脈絡為線索,結合Python生態系統,通過融合傳統文化、歷史人文等元素的實踐案例,力求在輕松的氛圍中培養學習者的程序設計能力和計算思維能力。
全書共分10章,主要內容包括搭建編程環境、基礎語法、流程控制語句、字符串、列表元組與字典、函數、訪問文件、處理異常、模塊與包、面向對象編程等。本書各章採用模塊化組織,除了具體知識細節的梳理鋪陳,每章都會介紹相關的Python庫,並提供多個案例對全章所學知識做綜合演練,通過拓展實踐進一步提升讀者的實操能力。
作者簡介
王静红,博士,河北师范大学三级教授,河北省有突出贡献中青年专家,河北省新世纪“三三三”人才,河北省信息化专家委员会委员,河北省大数据学会秘书长,国际IEEE高级会员,中国人工智能学会专委会委员,石家庄市拔尖人才,石家庄市十佳青年教师,河北省人工智能学会理事,中国计算机CCF石家庄执委。美国常青藤大学,伊利诺伊州大学厄巴纳-香槟分校(UIUC)高级访问学者。 主持的省科技攻关项目获河北省科技进步二等奖。教学名师、学术带头人、中青年骨干教师。先后在《Pattern Recognition and Artificial Intelligence》、《Journal of Zhejiang University》、《计算机研究与发展》等国内外科技刊物发表论文50多篇,其中30余篇被SCI、EI检索收录。科研方向为大数据与数据挖掘、人工智能、模式识别、计算机应用等。
目錄大綱
目錄
第 1章 搭建編程環境 1
1.1 初識Python 1
1.2 理解Python解釋器 2
1.3 熟悉Python自帶的編程環境 2
1.3.1 安裝Python解釋器 2
1.3.2 Python自帶編程環境簡介 3
1.4 Python的集成開發環境簡介 5
1.4.1 PyCharm簡介 5
1.4.2 Visual Studio Code簡介 8
1.4.3 Jupyter Notebook簡介 9
1.4.4 Thonny簡介 10
1.5 Python生態之turtle庫 10
1.5.1 小海龜的坐標系 11
1.5.2 小海龜的常用方法 12
1.6 小試牛刀 16
1.6.1 繪制一朵嚮日葵 16
1.6.2 繪制多彩的螺旋 17
1.7 拓展實踐:使用海龜繪制京劇臉譜 18
1.7.1 繪制前的預備工作 18
1.7.2 繪制臉譜代碼解析 19
1.7.3 為繪制的臉譜題字 21
本章小結 22
思考與練習 22
第 2章 基礎語法概述 23
2.1 Python語法規範 23
2.1.1 大小寫 23
2.1.2 縮進 23
2.1.3 註釋 24
2.1.4 留白 25
2.1.5 換行 25
2.2 變量和數據類型 27
2.2.1 變量 27
2.2.2 數據類型 28
2.2.3 類型轉換 30
2.3 常見運算符 31
2.3.1 算術運算符 31
2.3.2 賦值運算符 32
2.3.3 復合賦值運算符 32
2.3.4 比較運算符 32
2.3.5 邏輯運算符 33
2.3.6 成員運算符 33
2.3.7 運算符的優先級 34
2.4 輸入與輸出 34
2.4.1 輸出函數print() 34
2.4.2 輸入函數input() 35
2.5 Python生態之math庫 36
2.5.1 訪問math庫文檔 36
2.5.2 math庫函數舉例 37
2.6 小試牛刀 38
2.6.1 什麽樣的密碼更安全 38
2.6.2 人體內大約有多少個水分子 39
2.6.3 多一份備份,多幾分保障 39
2.6.4 如何換算座位號 40
2.6.5 日出時間是多少 40
2.7 拓展實踐:模擬自動售貨機找零 42
2.7.1 問題描述 42
2.7.2 IPO建構法 42
2.7.3 分解問題 42
2.7.4 編寫程序 43
2.7.5 測試代碼 44
本章小結 44
思考與練習 44
第3章 流程控制語句 45
3.1 選擇結構:if語句 45
3.1.1 if語句的基本形式 45
3.1.2 if語句中的條件表達式 48
3.1.3 if語句的嵌套 51
3.2 循環結構:while與for語句 51
3.2.1 while語句 51
3.2.2 for語句 53
3.2.3 循環結構的嵌套 55
3.3 循環結構:break與continue語句 56
3.3.1 break語句 57
3.3.2 continue語句 58
3.3.3 循環結構的else分支 58
3.4 pass語句 59
3.5 Python生態之random庫 60
3.5.1 隨機小數 60
3.5.2 隨機整數 61
3.5.3 隨機抽樣 61
3.5.4 洗牌 62
3.6 小試牛刀 63
3.6.1 計算人體BMI指數 63
3.6.2 伯努利試驗不白努力 64
3.6.3 模擬布朗運動 65
3.6.4 羊與汽車的距離是一念之差 66
3.6.5 《少年中國說》案例進階版 67
3.7 拓展實踐:隨機數是如何生成的 71
3.7.1 電腦中的隨機數真的隨機嗎 71
3.7.2 實現一個偽隨機數生成器 71
3.7.3 去掉偽隨機數算法的偽裝 72
3.7.4 衡量偽隨機數的隨機性 72
本章小結 74
思考與練習 75
第4章 字符串 76
4.1 認識字符串 76
4.1.1 字符串 76
4.1.2 轉義字符 77
4.1.3 字符串的運算符 78
4.1.4 字符的編碼 78
4.2 字符串的格式化 79
4.2.1 字符串的format()方法 79
4.2.2 格式化字符串字面值 81
4.2.3 Python 2.x的格式化方法 81
4.3 字符串的切片 81
4.3.1 字符串是字符構成的序列 81
4.3.2 字符串的切片 82
4.3.3 字符串是不可修改的 83
4.4 字符串的常用方法 83
4.4.1 find()方法 84
4.4.2 index()方法 84
4.4.3 count()方法 84
4.4.4 replace()方法 85
4.4.5 split()與join()方法 85
4.5 Python生態之xml庫 86
4.5.1 XML是什麽 86
4.5.2 解析XML數據 87
4.6 小試牛刀 90
4.6.1 模擬詩詞飛花令 90
4.6.2 輸出乘法口訣表 91
4.6.3 模擬傳輸校驗碼 93
4.6.4 名畫知識問答 96
4.7 拓展實踐:綜合運用字符串的方法 97
4.7.1 猜單詞小游戲 98
4.7.2 游戲的分析與初步實現 99
4.7.3 游戲代碼的完善 102
本章小結 104
思考與練習 105
第5章 列表、元組與字典 106
5.1 列表 106
5.1.1 認識列表 106
5.1.2 遍歷列表 108
5.1.3 列表的運算符 109
5.2 列表元素的操作 109
5.2.1 元素最值 110
5.2.2 增加元素 110
5.2.3 修改元素 111
5.2.4 刪除元素 111
5.2.5 元素排序 114
5.3 元組 115
5.3.1 認識元組 115
5.3.2 遍歷元組 115
5.4 字典 116
5.4.1 認識字典 116
5.4.2 字典的常見操作 117
5.5 Python生態之jieba庫 121
5.5.1 jieba庫的安裝 121
5.5.2 分詞的基本操作 121
5.5.3 詞頻統計 122
5.6 小試牛刀 124
5.6.1 隨機分配辦公室 124
5.6.2 模擬婚介 125
5.6.3 模擬抽獎 126
5.6.4 誰是天際社交達人 127
5.7 拓展實踐:讓機器理解文章的相似性 130
5.7.1 文本的精確比對 130
5.7.2 相似度與散點圖 130
5.7.3 散點圖的實現 131
5.7.4 自然語言處理與人工智能 138
本章小結 139
思考與練習 139
第6章 函數 140
6.1 函數的定義和調用 140
6.1.1 函數定義 140
6.1.2 函數的意義 141
6.1.3 函數的調用 143
6.1.4 函數的幫助信息 145
6.2 函數的參數與返回值 146
6.2.1 深入理解參數 146
6.2.2 函數的返回值 149
6.2.3 四種函數類型 151
6.3 函數的嵌套調用與變量作用域 152
6.3.1 函數的嵌套調用 152
6.3.2 變量的作用域 155
6.4 遞歸 159
6.4.1 函數的遞歸 159
6.4.2 理解遞歸思想 160
6.4.3 日常生活中的遞歸 161
6.5 Python生態之time庫 162
6.5.1 時間戳 162
6.5.2 時間結構體與格式符 162
6.5.3 其他常用時間函數 164
6.6 小試牛刀 165
6.6.1 使用迭代公式求π 165
6.6.2 模擬比薩計價 166
6.6.3 重構蒙提霍爾三門問題 167
6.6.4 判斷元素個數是否為偶數 168
6.6.5 模擬二十四節氣倒計時 168
6.7 拓展實踐:利用遞歸繪制分形圖案 171
6.7.1 什麽是分形圖案 171
6.7.2 繪制一棵樹 172
6.7.3 繪制科克曲線 176
本章小結 178
思考與練習 178
第7章 訪問文件 179
7.1 文件的使用流程 179
7.1.1 為什麽要使用文件 179
7.1.2 如何使用文件 179
7.1.3 open()函數的使用 179
7.2 文件的讀寫操作 181
7.2.1 讀取文本文件 181
7.2.2 寫入文本文件 182
7.2.3 with語句 183
7.3 Python生態之os庫 183
7.3.1 文件改名 184
7.3.2 刪除文件 184
7.3.3 文件夾相關操作 184
7.4 小試牛刀 186
7.4.1 使用配置文件保存比薩定價 186
7.4.2 去掉重復姓名 187
7.4.3 文件批量重命名 188
7.5 拓展實踐:根據訂單數據生成銷售報告 189
7.5.1 問題描述 189
7.5.2 思路分析 190
7.5.3 代碼實現 190
本章小結 192
思考與練習 192
第8章 處理異常 194
8.1 異常的基礎知識 194
8.1.1 異常是什麽 194
8.1.2 異常處理的語法結構 194
8.2 異常的種類 197
8.2.1 內置的常見異常種類 197
8.2.2 Exception異常類 197
8.2.3 自定義異常 198
8.3 主動拋出異常 198
8.3.1 用raise語句上報異常 198
8.3.2 用assert語句調試程序 199
8.4 Python生態之shutil庫 200
8.4.1 使用copy()函數復制文件 200
8.4.2 使用copy2()函數復制文件的元數據 201
8.4.3 shutil庫的其他函數簡介 202
8.5 小試牛刀 202
8.5.1 繪制歷史名人時間線 202
8.5.2 批量歸納圖片文件 205
8.6 拓展實踐:給程序做個彩超 207
8.6.1 百思不得其解的bug 207
8.6.2 使用斷點逐步調試程序 208
本章小結 211
思考與練習 211
第9章 模塊與包 212
9.1 模塊與包的本質 212
9.2 庫的安裝與導入 213
9.2.1 使用pip安裝第三方庫 213
9.2.2 導入模塊的不同形式 214
9.3 Python生態 之Pygame庫 216
9.3.1 初識Pygame 216
9.3.2 搭建游戲主框架 216
9.3.3 完善游戲細節 217
9.4 小試牛刀 221
9.4.1 游戲預備工作 221
9.4.2 游戲主循環 223
9.5 拓展實踐:使用模塊組織代碼 226
9.5.1 多樣的投票模式 226
9.5.2 一個具體的投票問題 226
9.5.3 模塊vote_tools 227
9.5.4 模塊vote_methods 228
9.5.5 導入自定義的模塊 230
本章小結 231
思考與練習 231
第 10章 面向對象編程 232
10.1 面向對象簡介 232
10.2 類、對象與封裝 234
10.2.1 定義一個類 234
10.2.2 對象實例化過程 235
10.2.3 訪問控制 236
10.3 繼承與多態 237
10.3.1 繼承的基本形式 237
10.3.2 方法的覆蓋 239
10.3.3 多態和鴨子類型 240
10.4 Python生態之tkinter庫 241
10.4.1 初識tkinter 241
10.4.2 生成窗體與標簽 242
10.4.3 生成文本框與按鈕 243
10.5 小試牛刀 244
10.5.1 使用類重構歷史時間線案例 244
10.5.2 使用tkinter設計打地鼠游戲 246
10.6 拓展實踐:試一把面向對象編程 250
10.6.1 識別對象與類 250
10.6.2 使用設計模式 251
10.6.3 使用模塊和包 252
本章小結 253
思考與練習 254