TOP
0
0
【簡體曬書節】 單本79折,5本7折,優惠只到5/31,點擊此處看更多!
提醒您!您有折價券未完成領取,請盡速登入以保存至您的帳號。
每個人的Python:數學、算法和遊戲編程訓練營(微課版)(簡體書)
滿額折

每個人的Python:數學、算法和遊戲編程訓練營(微課版)(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
領券後再享88折起
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

《每個人的Python:數學、算法和遊戲編程訓練營(微課版)》以數學為切入點,以Python編程語言為工具,介紹大量流行的編程題目的解題思路,並且提供了多種解題方案。該書涉及的編程題目領域廣泛,包括數字類題目、圖形類題目、字符串類題目、數據結構類題目以及遊戲類題目等,由淺入深地訓練讀者的編程思維能力。通過該書的學習,讀者可以掌握使用編程工具解決問題的核心思路,並能夠獨立思考和解決各種場景下的編程問題。
對於從未接觸過編程的人員來說,該書以問題驅動的教學方法,因為有趣且強調動手實踐,非常適合初學者快速入門。對於編程人員來說,該書介紹的解題思路和算法可以幫助編程人員提高代碼質量。
《每個人的Python:數學、算法和遊戲編程訓練營(微課版)》也適合編程領域的求職者使用,書中提供的編程題目很多都是面試中常見的算法問題。

作者簡介

張益琿(網名:琿少)

多年iOS開發經驗,51CTO學院、CSDN學院簽約講師 ,主要從事移動端應用開發,曾就職於國內知名電商網站,從事iOS端應用程序的業務開發與性能優化工作。目前在國內知名社交產品公司從事IM系統的架構設計工作。對iOS開發、React Native和Flutter跨平臺開發及JavaScript前端開發都擁有豐富的經驗。已出版《iOS開發實戰:從零基礎到App Store上架》《React Native全教程:移動端跨平臺應用開發》《iOS開發實戰:從零基礎到上架App Store(第3版)》《Swift從零到精通iOS開發》等多本編程著作。開源中國特邀技術專家,發表相關技術博客400餘篇,訪問量100萬餘次。


名人/編輯推薦

本書以數學為切入點,介紹用編程來解決數學問題,其中涉及的算法和遊戲相關的題目也與數學相關。

本書針對有興趣學習編程的初學者編寫。本書不僅介紹Python編程的基本概念與入門知識,還介紹了大量常見的算法和遊戲編程示例,其目的是鍛煉讀者的編程思維和提升動手能力。

本書以問題驅動為主線——通過提出一系列問題,然後介紹如何使用編程這種工具來解決它!這也是本書的獨特之處。

你會發現,本書每一節的開頭首先會提出一個問題,當你看到問題時,可以先思考如何解決,嘗試自己動手編程來解決此問題,無論你是否能夠成功解決,思考的過程都能使你受益,自主嘗試解決後,再繼續閱讀書中提供的解題思路與方法,最終與自己的思考結果相結合,從而不斷進步。

本書涉及的題目分為三大類,一類是數學題目,這些題目很多都是中學學過的,如數學問題、幾何圖形相關的問題,看起來很簡單,但也需要讀者對問題進行思考與分析,設計出合適的算法編寫程序來解決;第二類是算法問題,這類問題大都是數據結構相關的問題,如列表、棧、樹、圖等,對於這類問題,本書會給出概念和原理,即使你沒有學過數據結構也一樣可以輕松理解;第三類是遊戲問題,這類問題也可以看作數學應用題以遊戲的方式呈現出來,其中很多題目來自生活中的場景,如何將生活場景問題進行抽象,之後通過編程的方式解決,是本類問題的核心。

從數學問題到算法問題,再到遊戲問題,每一類問題都會有多種題目,通過練習解答更多的題目,你的編程技藝和抽象思維能力也就在不知不覺中大幅提升了。

通過學習本書你會發現,編程並不是只有專業人士才能幹的事,任何人只要有興趣都可以學會它,重要的是你可以用編程來解決問題!


首先感謝讀者願意花時間閱讀本書。選擇本書說明你了解編程,或者至少對編程有興趣。本書定義為一本計算機科學的編程書其實並不確切,因為書中並不會介紹晦澀難懂的編程語言語法,也不會介紹實際應用中的項目開發方法,本書只是提供了一系列的問題,然後介紹如何使用編程這種工具來解決它。但是將本書定義為數學學科的圖書也不正確,雖然書中很多問題與數學有關,有時甚至需要我們了解底層的數學原理才能解決,但是同樣,對於本書來說,數學也是解決問題的工具。那麼,我們姑且稱此書為“問題之書”吧。
閱讀任何一本書的過程實際上都是一種學習的過程,你現在最關心的應該是如何學習本書,以及本書能夠帶給你什麼。首先,閱讀本書需要有一定的編程基礎,至少了解和學習過一門編程語言,當然如果掌握了Python編程語言就最好不過了。在本書中,每一節的開頭都會提出一個問題,當你看到問題時,可以先思考如何解決,嘗試自己動手編程來解決此問題,無論你是否能夠成功解答,思考的過程都能使你受益,自主嘗試解答後,再繼續閱讀書中提供的解題思路與方法,最終與自己的思考結果相結合,從而不斷進步。
在章節安排上,本書共13章。除了第1章與第13章之外,每一章都是一個獨立的專題,並沒有嚴格的先後順序。因此,如果你在閱讀本書時對某一章節的內容不太感興趣,完全可以跳過它。但是筆者依然建議按照書中章節的安排順序進行閱讀,從易到難的學習節奏對大多數讀者來說是更科學的。本書中的示例題目收集自互聯網上流行的編程訓練集,筆者對其中的題目大多都進行了修正和改編,以期更適合入門級的讀者學習。
第1章是本書的入門章節,本書中提供的問題解答示例都是以Python編程語言為基礎進行編程解答的,因此讀者需要對Python編程語言本身有簡單的了解。在本章中,將首先為讀者介紹Python語言在編程領域的用武之地,本書之所以選擇Python作為主語言,正是由於其擁有使用簡單、應用廣泛的特點。你完全不需要擔心沒有基礎能否順利地學習,本章會對Python中核心的基礎語法進行介紹,只要掌握了這些技能,閱讀本書的後續章節就不會有任何障礙。本章也將帶領讀者一起安裝完成Python編程所需的相關開發環境。
第2章以數學為切入點,介紹編程在數學領域的應用方式,也將向讀者介紹一些基礎的計算機原理知識,幫助讀者理解程序的工作原理。
第3、4章提供了一系列與數字相關的編程題。第3章主要介紹特殊的數字,比如阿姆斯特朗數、回文數、完全平方數等。第4章主要介紹與數字計算相關的編程題,例如二進制運算、分數運算等。通過這些題目的練習,能夠使讀者更加深刻地理解二進制,運用二進制。
第5章介紹的編程題都與幾何圖形相關,與圖形相關的題目能夠鍛煉大腦的抽象思維能力。本章提供的題目重點關注生活中幾何圖形的點、線、面的關係,其中可能會使用到一些簡單的幾何定理,但更多需要讀者對問題進行思考與分析,設計出合適的算法來編寫程序解決問題。
第6、7章的題目都與字符相關,字符與字符串的操作是實際編程工作中非常重要的技能,因此本章提供的題目相對更加面向應用,在計算機語義識別、數據整理與報表等諸多領域,字符串操作技術都有廣泛應用。
第8~10章是計算機數據結構相關的內容,通過對數組、鏈表、堆棧和樹相關結構的題目進行練習,可以幫助讀者更加深入地理解數據結構的原理以及數據結構設計的巧妙之處。這幾章的題目難度也略高。
第11、12章以遊戲的方式來介紹編程題目,在數學上,我們也稱此類題目為應用題。其中提供的大部分題目都來自生活中的場景,如何將生活場景問題進行抽象,之後通過編程的方式解決,是本章的核心內容。
第13章是本書的附加章節,當讀者完成本書前12章的學習後,相信對編程也會有新的理解。此時對於讀者來說,編程不應該是結束,而是新的開始。本章將向讀者介紹更多Python編程領域,例如網站開發、遊戲開發等,讀者可以選擇自己感興趣的內容繼續深入學習。
最後,對於本書的出版,感謝支持筆者的家人和朋友,感謝清華大學出版社王金柱編輯的勤勞付出。在王編輯的指導下,筆者才得以完成本書的章節規劃、內容修正等工作。重中之重是感謝讀者的耐心,筆者由衷地希望本書可以帶給讀者預期的收獲。無論是學習還是工作,都希望讀者在閱讀本書後能夠更上一層樓。同時,由於編者水平所限,書中難免出現疏漏和欠妥之處,歡迎讀者批評指正。
本書源碼獲取
讀者可用微信掃描下方的二維碼下載本書源代碼。如果在學習本書的過程中遇到問題,請聯系mail,郵件主題為“每個人的Python:數學、算法和遊戲編程訓練營”。

目次

目 錄

第1章 走進Python世界 1

1.1 認識Python 1

1.1.1 Python的由來 1

1.1.2 Python可以做什麼 2

1.2 開發環境準備 3

1.2.1 安裝Python語言包 3

1.2.2 使用Sublime Text編程工具 4

1.3 編程中的基礎概念 6

1.3.1 面向過程編程中的基礎概念 6

1.3.2 面向物件編程中的基礎概念 8

1.4 Python語法初步 9

1.4.1 編程風格 9

1.4.2 變量與數據類型 10

1.4.3 運算符 13

1.4.4 流程控制語句 15

1.4.5 常用的數學函數 17

1.4.6 字符串操作相關方法 18

1.4.7 列表操作相關方法 20

1.4.8 字典操作相關方法 20

1.4.9 函數 21

1.5 Python面向物件編程 22

1.5.1 Python中的類 23

1.5.2 類的繼承 24

1.5.3 模塊和包的應用 25

本章結語 27

第2章 編程與數學 28

2.1 二進制運算 28

2.1.1 計算機的思考方式 29

2.1.2 計算機中數據的存儲方式 30

2.2 靈活使用程序打印數據 31

2.2.1 小試牛刀——打印乘法口訣表 31

2.2.2 小試牛刀——打印簡單圖形 33

2.3 小試牛刀——簡易計算器 36

2.3.1 接收用戶輸入 37

2.3.2 在終端運行的簡易計算器 38

本章結語 40

第3章 有趣的數字——特殊數 41

3.1 阿姆斯特朗數 41

3.1.1 什麼是阿姆斯特朗數 42

3.1.2 算法與實現——判斷一個數是否為阿姆斯特朗數 42

3.2 自除數 43

3.2.1 算法與實現——篩選自除數 43

3.2.2 使用高級循環方法對代碼進行優化 44

3.3 完全平方數 45

3.3.1 算法實現——四平方數和定理 45

3.3.2 編程實現——解決完全平方數問題 46

3.4 強整數 47

3.4.1 編程實現——篩選強整數 47

3.4.2 代碼改進——強整數檢索上限的尋找 48

3.5 回文數 48

3.5.1 編程實現——判斷回文數 48

3.5.2 代碼改進——求回文素數 49

3.6 丑數 50

3.6.1 編程實現——如何判斷丑數 51

3.6.2 代碼改進——嘗試找到第n個丑數 52

3.6.3 代碼改進——解決丑數擴展問題 53

3.6.4 算法改進——使用二分查找第n個丑數 53

3.7 完美數 55

3.7.1 完美數的故事 55

3.7.2 編程實現——如何判斷完美數 55

3.8 快樂數 56

3.9 順次數 57

3.10 步進數 58

3.11 中心對稱數 60

3.11.1 編程實現——通過字典映射來判斷中心對稱數 60

3.11.2 代碼改進——查找指定位數的中心對稱數 60

3.11.3 代碼改進——確定中心對稱數的個數 61

3.12 累加數 63

3.13 易混淆數 64

本章結語 65

第4章 有趣的數字——數字計算 66

4.1 二進制相關運算 66

4.1.1 編程實現——二進制求和 66

4.1.2 編程實現——求十進制數的反碼 67

4.1.3 編程實現——計算漢明距離 68

4.1.4 代碼改進——求二進制數中1的最長間距 69

4.1.5 代碼改進——顛倒二進制數 70

4.2 玩轉四則運算 70

4.2.1 編程實現——一個數的各位相加 71

4.2.2 編程實現——不用加減乘除運算符做加法 72

4.2.3 代碼改進——求階乘的尾數 73

4.3 數字間的特殊運算 74

4.3.1 編程實現——平方根函數 74

4.3.2 編程實現——求平方數之和 75

4.3.3 編程實現——判斷一個數是否為某數的冪次方 75

4.4 計算質數 76

4.4.1 編程實現——統計質數個數 76

4.4.2 編程實現——深度判斷二進制數中特殊數的個數 78

4.5 數字轉換 79

4.5.1 編程實現——整數轉換 79

4.5.2 編程實現——整數轉換成十六進制數 80

4.5.3 編程實現——將分數轉換成小數 81

4.5.4 編程實現——羅馬數字轉整數 83

4.5.5 代碼改進——整數轉羅馬數字 84

本章結語 85

第5章 圖形世界的點線面 86

5.1 有趣的點與線 86

5.1.1 編程實現——連點成線 86

5.1.2 編程實現——最短時間內訪問所有的點 88

5.1.3 編程實現——找到穿過最多點的直線 89

5.2 圖形的奧妙 91

5.2.1 編程實現——輸出楊輝三角 91

5.2.2 代碼改進——嘗試輸出楊輝三角的某一行 92

5.2.3 編程實現——規劃一個矩形合理的長和寬 93

5.2.4 編程實現——判斷矩形是否重疊 94

5.2.5 代碼改進——判斷圓和矩形是否有重疊 95

5.2.6 編程實現——統計有效三角形的個數 97

5.3 周長與面積 98

5.3.1 編程實現——求重疊矩形的面積 98

5.3.2 編程實現——找到最小面積的矩形 100

5.3.3 編程實現——求三角形的最大周長 103

5.3.4 編程實現——求最大的三角形面積 104

5.4 凸多邊形 105

5.4.1 什麼是凸多邊形 105

5.4.2 向量叉乘 106

5.4.3 編程實現——判斷凸多邊形 106

5.5 三維圖形 107

5.5.1 編程實現——計算三維形體的表面積 107

5.5.2 代碼改進——求解三維形體的投影面積 109

本章結語 110

第6章 探索字符的世界——字符串操作 111

6.1 字符串的排列 111

6.1.1 編程實現——格式化字符串 111

6.1.2 編程實現——格式化字符串進階 113

6.1.3 編程實現——字符串全排列 114

6.1.4 編程實現——根據字符出現的頻率進行排序 116

6.1.5 編程實現——交換字符 117

6.2 字符串的分割 119

6.2.1 平衡字符串的分割 119

6.2.2 編程實現——分割出回文字符串 120

6.2.3 編程實現——分割字符串獲取最大分數 121

6.3 字符串的查找與統計 121

6.3.1 編程實現——統計連續字符的長度 121

6.3.2 編程實現——檢查字符串中所有的字符是否唯一 122

6.3.3 編程實現——查找第一次出現的唯一字符 123

6.3.4 編程實現——求最長不含重復字符的子字符串長度 124

6.3.5 編程實現——查找常用字符 125

6.4 字符串的變換 126

6.4.1 編程實現——字符串平移 126

6.4.2 編程實現——字符串平移加密 127

6.4.3 編程實現——壓縮字符串 128

6.4.4 編程實現——字符串解壓 129

6.4.5 編程實現——將數字翻譯成字符串 131

本章結語 132

第7章 探索字符的世界——字符串應用 133

7.1 單詞提取 133

7.1.1 編程實現——統計字符串中的單詞個數 133

7.1.2 編程實現——返回字符最後一個單詞的長度 134

7.1.3 編程實現——統計最常用的單詞 135

7.1.4 編程實現——拆分單詞 136

7.1.5 編程實現——計算單詞的最短距離 137

7.2 詞句重組 138

7.2.1 編程實現——從字符串中返回字母組成單詞 138

7.2.2 編程實現——語句逆序 139

7.2.3 編程實現——語句重排 139

7.2.4 編程實現——單詞前綴替換 140

7.3 單詞縮寫 141

7.3.1 編程實現——判斷是否有相同的縮寫 141

7.3.2 編程實現——列舉單詞所有縮寫形式 143

7.4 語句處理 144

7.4.1 編程實現——比較語句的差異 144

7.4.2 編程實現——分析詞組 145

7.5 回文字符串 146

7.5.1 編程實現——驗證回文字符串 146

7.5.2 編程實現——構造回文字符串 147

7.5.3 編程實現——找到最長的回文子字符串 149

7.5.4 編程實現——拼接構成回文串 149

7.6 字符串的復雜操作 150

7.6.1 編程實現——字符串解碼 150

7.6.2 編程實現——構建IP地址 152

7.6.3 編程實現——驗證IP地址的有效性 153

7.6.4 編程實現——實現模糊匹配 155

本章結語 156

第8章 玩轉數據結構——列表與鏈表 157

8.1 獲取列表中的信息 158

8.1.1 編程實現——尋找列表平衡點 158

8.1.2 編程實現——找到列表中缺失的元素 158

8.1.3 代碼改進——尋找所有整數中兩數之差絕對值的最大值 159

8.1.4 代碼改進——根據條件獲取列表中的值 161

8.1.5 代碼改進——尋找列表中連續元素的和的最大值 161

8.1.6 代碼改進——尋找列表中最長的連續遞增序列 163

8.1.7 代碼改進——尋找重復次數最多的元素 164

8.1.8 代碼改進——尋找列表的凸點 165

8.2 列表操作 166

8.2.1 編程實現——將列表中的0進行後置 166

8.2.2 代碼改進——遞增列表的合並 167

8.2.3 代碼改進——向列表中插入元素 169

8.2.4 代碼改進——清除重復元素 169

8.2.5 代碼改進——列表分隔問題 171

8.2.6 代碼改進——對列表進行原地排序 172

8.2.7 代碼改進——判斷列表是否有序 172

8.2.8 編程實現——構建斐波那契數列 173

8.3 列表中元素的和 174

8.3.1 編程實現——找到列表中合適的兩個元素 174

8.3.2 代碼改進——找出列表中所有滿足條件的三元素組 175

8.4 簡單鏈表操作 177

8.4.1 編程實現——遍歷鏈表 178

8.4.2 代碼改進——刪除鏈表中的節點 179

8.4.3 代碼改進——鏈表合並 181

8.4.4 代碼改進——鏈表轉整數 182

8.5 特殊性質的鏈表 183

8.5.1 編程實現——判斷回文鏈表 183

8.5.2 代碼改進——判斷環形鏈表 183

8.5.3 鏈表重構——奇偶排列的鏈表 185

8.6 高級鏈表操作 186

8.6.1 編程實現——鏈表大數求和 186

8.6.2 代碼改進——鏈表重排 188

8.6.3 代碼改進——對鏈表進行原地排序 189

8.6.4 代碼改進——旋轉鏈表 190

8.6.5 代碼改進——交換鏈表相鄰的節點 191

8.6.6 編程實現——設計鏈表結構 192

本章結語 195

第9章 玩轉數據結構——棧、堆與隊列 196

9.1 簡單棧數據結構 196

9.1.1 編程實現——設計棧結構 197

9.1.2 代碼改進——利用棧清理無效的括號 198

9.1.3 代碼改進——處理平衡括號 199

9.1.4 代碼改進——進行括號內容逆序 200

9.1.5 代碼改進——刪除最外層括號 201

9.1.6 代碼改進——補充缺失的括號 202

9.1.7 代碼改進——遞歸刪除重復的相鄰字符 203

9.1.8 代碼改進——實現條件運算符 205

9.1.9 代碼改進——簡化文件路徑 206

9.2 堆的簡單應用 208

9.2.1 什麼是堆 208

9.2.2 編程實現——查找高頻單詞 209

9.2.3 編程實現——尋找最接近原點的n個點 210

9.3 隊列的簡單應用 211

9.3.1 編程實現——設計隊列 211

9.3.2 代碼改進——設計循環隊列 213

本章結語 215

第10章 玩轉數據結構——樹與圖 216

10.1 二叉樹的判定 217

10.1.1 編程實現——解析二叉樹的深度 218

10.1.2 代碼改進——平衡二叉樹的判定 220

10.1.3 代碼改進——對稱二叉樹的判定 221

10.1.4 代碼改進——判斷兩棵二叉樹是否相同 223

10.1.5 代碼改進——二叉樹相加 224

10.1.6 代碼改進——單值二叉樹的判定 226

10.2 二叉樹的遍歷 226

10.3 構造二叉樹 233

10.4 刪除二叉樹中的節點 238

10.5 獲取二叉樹中存儲的信息 242

10.6 圖結構的應用 249

本章結語 253

第11章 燒腦遊戲編程—— 熱身篇 254

11.1 上樓梯 254

11.2 猜數字遊戲 255

11.3 套餐組合問題 256

11.4 種樹問題 257

11.5 算術機器人 258

11.6 單行的鍵盤 259

11.7 統計運動員的名次 260

11.8 分金幣 260

11.9 傳繡球遊戲 261

11.10 撲克遊戲 263

11.11 酒瓶子問題 264

11.12 所有可能的木板長度 265

11.13 計算機高手 265

11.14 燈泡問題 267

11.15 寶石鑒定 272

11.16 翻轉遊戲 272

11.17 井字棋的輸贏判定 273

11.18 分發糖果問題 275

11.19 排布硬幣 278

11.20 列表變換遊戲 279

11.21 國際象棋中的車 280

11.22 計算員工的平均工資 282

11.23 比賽計分 283

11.24 股票買賣的最大盈利 284

11.25 單詞組合遊戲 285

本章結語 286

第12章 燒腦遊戲編程——進階篇 287

12.1 統計戰艦個數 287

12.2 田忌賽馬 289

12.3 炸彈人遊戲 290

12.4 消除數字 291

12.5 為賽車加油 293

12.6 馬走日 295

12.7 最大的島嶼面積 297

12.8 跳躍遊戲 298

12.9 拿石子遊戲 301

12.10 分割繩子 301

12.11 載人過河 302

12.12 迅捷斥候——提莫 304

12.13 水壺問題 305

12.14 疊羅漢 307

12.15 活字印刷術 308

本章結語 309

第13章 巧用編程工具 310

13.1 更加強大的編輯器 310

13.2 編寫有趣的界面應用 315

13.3 看得見的遊戲 317

13.4 各種有趣而強大的Python模塊 319

本章結語 324

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區