本書以問題求解為核心原則,以Python語言為平臺,通過面向應(yīng)用和循序漸進設(shè)計的典型實例,引導學生關(guān)注和掌握編程邏輯和方法,實現(xiàn)從系統(tǒng)級上對算法和程序設(shè)計的再認識,強調(diào)系統(tǒng)設(shè)計。主要內(nèi)容包括常用Python集成開發(fā)與調(diào)試環(huán)境、經(jīng)典案例與算法、綜合案例三個部分,可作為高校Python程序設(shè)計等相關(guān)課程的實踐參考書,也可作為讀者自學Python編程的參考讀物。
一提到Python語言,大家一定會首先想到以下廣為人知的經(jīng)典口號:人生苦短,我用Python;人生苦短,Python是岸;人生苦短,Python當歌。
寥寥數(shù)字,盡顯Python之禪——簡潔為美,簡約而不簡單。C、Java、C++語言長期傲視群雄,而Python語言作為一種“年輕”的語言,大有后來者居上之勢,成為人工智能+大數(shù)據(jù)時代的不二之選。
與之前的《程序設(shè)計實踐教程:C 語言版》和《程序設(shè)計實踐教程:C++語言版》一樣,本書程序采用統(tǒng)一的代碼規(guī)范編寫,并且在編碼中注重程序的健壯性。同時,書中實踐案例的選取兼顧趣味性和實用性。本書內(nèi)容分為三部分。部分介紹集成開發(fā)環(huán)境,包括IDLE、PyCharm、Jupyter Notebook、Visual Studio Code四種常用的Python語言集成開發(fā)環(huán)境的使用和程序調(diào)試方法。第二部分是經(jīng)典實驗案例,主要包括基本運算和基本 I/O、基本控制結(jié)構(gòu)、枚舉法、遞推法、近似迭代法、遞歸法、趣味數(shù)字、矩陣運算、日期和時間、文本處理、面向?qū)ο蟆⒉檎液团判、高精度計算和近似計算、貪心與動態(tài)規(guī)劃等專題。在本部分中,還結(jié)合Python語言獨有的特點,設(shè)計了使用jieba庫進行中文文檔的詞頻統(tǒng)計分析、使用wordcloud庫顯示詞云圖以及CSV格式文件的讀寫等案例。第三部分是綜合案例,包括餐飲服務(wù)質(zhì)量調(diào)查、小學生算術(shù)運算訓練系統(tǒng)、青年歌手大獎賽現(xiàn)場分數(shù)統(tǒng)計、隨機點名系統(tǒng)、基于turtle庫的圖形繪制5個應(yīng)用案例,以及多個游戲設(shè)計案例,如火柴游戲、文曲星猜數(shù)游戲、2048 數(shù)字游戲、貪吃蛇游戲、飛機大戰(zhàn)、Flappy bird、井字棋游戲、桿子游戲、俄羅斯方塊。
書中每個實踐案例均提供了多種編程方法,并且很多案例都采用循序漸進的任務(wù)驅(qū)動方式,引導讀者舉一反三、觸類旁通。這些實踐案例會幫助你提升編程能力,讓你在快速從新手成長為高手的同時,體會 Python 之美和程序設(shè)計之美。
本書由蘇小紅組織和統(tǒng)籌編寫工作,部分由孫承杰執(zhí)筆,第二部分和第三部分主要由蘇小紅執(zhí)筆,新增的案例由李東設(shè)計并進行程序調(diào)試,其他部分案例由蔣遠設(shè)計并調(diào)試。
因編者水平有限,書中錯誤在所難免,歡迎讀者對本書提出意見和建議,我們會在重印時予以更正,讀者也可隨時從我們的教材網(wǎng)站(http://sse.hit.edu.cn/book/)和華章網(wǎng)站(http://www.hzbook.com)下載勘誤表。編者的 E-mail 地址為 sxh@hit.edu.cn。
編 者
2021 年于哈爾濱工業(yè)大學計算學部
蘇小紅 教授,博士生導師,現(xiàn)任哈爾濱工業(yè)大學計算學部智能軟件工程研究中心主任,計算機科學與技術(shù)實驗教學示范中心副主任。國家精品資源共享課“C語言程序設(shè)計”和省級精品課程“計算機圖形學”負責人。主持的MOOC課程“C語言程序設(shè)計精髓”和“程序設(shè)計基礎(chǔ)”被評為國家精品在線開放課程。獲教學成果一、二等獎各1項,黑龍江省教學成果一等獎4項、二等獎3項。曾獲省教學名師獎、寶鋼優(yōu)秀教師獎等榮譽稱號。
前言
部分 開發(fā)環(huán)境
第1章 集成開發(fā)環(huán)境簡介 2
1.1 程序調(diào)試 2
1.1.1 程序調(diào)試的概念 2
1.1.2 程序錯誤的種類 2
1.1.3 常用調(diào)試方法 3
1.2 經(jīng)典集成開發(fā)環(huán)境介紹 4
1.2.1 IDLE的使用和調(diào)試方法 4
1.2.2 PyCharm的使用和調(diào)試方法 10
1.2.3 Jupyter Notebook的使用和調(diào)試方法 24
1.2.4 Visual Studio Code的使用和調(diào)試方法 31
1.3 小結(jié) 38
第二部分 經(jīng)典實驗案例
第2章 基本運算和基本I/O專題 40
2.1 數(shù)位拆分v1.0 40
2.2 身高預(yù)測v1.0 41
2.3 計算三角形面積 42
2.4 存款計算器 43
第3章 基本控制結(jié)構(gòu)專題 45
3.1 數(shù)位拆分v2.0 45
3.2 身高預(yù)測v2.0 48
3.3 體型判斷 49
3.4 算術(shù)計算器 50
3.5 國王的許諾 54
3.6 計算圓周率 55
3.7 數(shù)字位數(shù)判斷 56
3.8 階乘求和 58
第4章 枚舉法專題 61
4.1 還原算術(shù)表達式 61
4.2 求解不等式 63
4.3 韓信點兵 65
4.4 減肥食譜 66
第5章 遞推法專題 68
5.1 猴子吃桃 68
5.2 吹氣球 69
5.3 發(fā)紅包 70
5.4 水手分椰子 73
第6章 近似迭代法專題 75
6.1 直接迭代法求方程根 75
6.2 牛頓迭代法求方程根 76
6.3 二分法求方程根 79
6.4 計算平方根 80
第7章 遞歸法專題 82
7.1 公約數(shù) 82
7.2 漢諾塔問題 85
7.3 騎士游歷 86
7.4 八皇后問題 89
第8章 趣味數(shù)字專題 92
8.1 楊輝三角形 92
8.2 好數(shù)對 95
8.3 完全數(shù) 97
8.4 親密數(shù) 100
8.5 素數(shù)求和 103
8.6 驗證哥德巴赫猜想 105
8.7 孿生素數(shù) 106
8.8 回文素數(shù) 107
第9章 矩陣運算專題 111
9.1 矩陣轉(zhuǎn)置 111
9.2 幻方矩陣 112
9.3 蛇形矩陣 115
9.4 螺旋矩陣 117
第10章 日期和時間專題 122
10.1 三天打魚兩天曬網(wǎng) 122
10.2 統(tǒng)計特殊的星期天 125
10.3 日期轉(zhuǎn)換 127
10.4 動態(tài)時鐘 134
第11章 文本處理專題 137
11.1 字符統(tǒng)計 137
11.2 單詞統(tǒng)計 145
11.3 行程長度編碼 150
11.4 串的模式匹配 152
11.5 中文文檔的統(tǒng)計分析 157
11.6 CSV格式文件的讀寫 160
第12章 面向?qū)ο髮n} 161
12.1 數(shù)字時鐘模擬 161
12.2 洗發(fā)牌模擬 162
12.3 逆波蘭表達式求值 165
12.4 約瑟夫問題 170
第13章 查找和排序?qū)n} 177
13.1 尋找值 177
13.2 關(guān)鍵字統(tǒng)計 182
13.3 驗證卡布列克運算 186
13.4 鏈表逆序 192
第14章 高精度計算和近似計算專題 196
14.1 高精度計算任意位圓周率 196
14.2 蒙特卡羅法近似計算圓周率 199
14.3 蒙特卡羅法計算定積分 201
第15章 貪心與動態(tài)規(guī)劃專題 203
15.1 活動安排 203
15.2 分發(fā)糖果 204
15.3 0-1背包問題 206
15.4 長上升子序列 209
第三部分 綜合案例
第16章 綜合應(yīng)用 212
16.1 餐飲服務(wù)質(zhì)量調(diào)查 212
16.2 小學生算術(shù)運算訓練系統(tǒng) 216
16.3 青年歌手大獎賽現(xiàn)場分數(shù)統(tǒng)計 222
16.4 隨機點名系統(tǒng) 227
16.5 基于turtle庫的圖形繪制 232
第17章 游戲設(shè)計 235
17.1 火柴游戲 235
17.2 文曲星猜數(shù)游戲 238
17.3 2048數(shù)字游戲 240
17.4 貪吃蛇游戲 244
17.5 飛機大戰(zhàn) 247
17.6 Flappy bird 252
17.7 井字棋游戲 255
17.8 桿子游戲 260
17.9 俄羅斯方塊 264