Python程序設計教程:基於案例的學習方法(原書第3版)(簡體書)
商品資訊
系列名:計算機科學叢書
ISBN13:9787111685166
出版社:機械工業出版社
作者:(美)布蘭德利‧N.米勒
譯者:江紅
出版日:2021/07/09
裝訂/頁數:平裝/317頁
規格:24cm*17cm (高/寬)
版次:一版
商品簡介
本書採用基於案例的學習方法,在不同應用場景下以問題求解為引導講授Python程序設計,涵蓋密碼學、影像處理、天文學和生物信息學等領域。第3版更新至Python 3.8,更加強調動手實踐,每一章都圍繞一個實戰項目展開討論,並包含大量的程序設計練習題。全書在應用場景中螺旋式引入解決問題所必需的Python語法知識和程序設計方法,從而通過不斷鞏固和拓展所學知識,進一步培養讀者的問題求解能力。本書適合作為高等院校計算機相關專業學生第yi門程序設計課程的教材或參考書,也可作為Python初學者的入門讀物。
作者簡介
布蘭德利·N. 米勒(Bradley N. Miller) 路德學院榮休教授,Runestone Interactive的創始人。
大衛·L.拉農(David L. Ranum) 路德學院教授,致力於軟件設計和作業系統方面的科研及教學工作。
朱莉·安德森(Julie Anderson) 退休前任教於羅林斯學院。她參與撰寫了一系列關於Java和Python語言的大學教材,並曾在計算機書刊出版機構擔任撰稿人、編輯和專欄作家。
---譯者簡介---
江紅 華東師範大學副教授,博士。1994年畢業於復旦大學計算機系。曾獲得上海市教學成果一等獎、華東師範大學教學成果一等獎、華東師範大學優秀任課教師獎等榮譽。
餘青松 華東師範大學高級工程師。1990年畢業於華東師範大學並留校任教。編著計算機相關教材30餘本,在國內外學術期刊和學術會議上發表科技論文近百篇。
名人/編輯推薦
本書採用基於案例的學習方法講解Python程序設計和計算機科學基礎知識,而非採用傳統的基於Python語法或語言元素的篇章結構。書中每一章都圍繞一個應用場景,涉及密碼學、影像處理、天文學和生物信息學等領域,通過程序設計實踐説明讀者快速掌握算法開發和問題求解技能。
本書特色
全面更新至Python 3.8,添加了大量新內容和新特性,並配有可免費下載的原始程式碼。
在應用場景中螺旋式引入解決問題所必需的語法知識和程序設計方法,不斷鞏固和拓展所學知識。
強調動手實踐,包含大量不同難度和不同複雜度的程序設計練習題,便於讀者自主學習及進階。
序
概述
計算機科學面向需要求解問題的科技工作者,算法則有助於找到這些問題的解決方案。想要成為一名計算機科學家,首先意味著我們必須致力於解決問題,能夠從零開始或者通過應用以往的經驗模式來構造算法。
精通計算機科學的唯一途徑是通過深思熟慮以及循序漸進的方式感受和體驗這門學科的基本思想。計算機科學的初學者在繼續深入學習更高級和更複雜的課程之前,需要通過反復的程序設計實踐來透徹理解基本概念。此外,初學者還需要通向成功和獲得自信的機會。當學生學習計算機科學入門知識時,我們希望他們專注於問題求解、算法開發以及算法理解等方面。
在本書中,我們使用Python作為程序設計語言,因為Python具有清晰和簡潔的語法,以及直觀的使用者環境。Python語言的基本集合庫功能非常強大,而且易於使用。Python語言的交互特性提供了一個便利的環境,使得使用者不需要大量的編碼就可以方便地測試問題求解的各種構想。最後,Python提供了一種類似於教科書的標記法來描述算法,從而減輕需要使用偽代碼描述算法的額外負擔。因此,Python語言非常有利於描述如何利用算法來解決許多現代的、有趣的問題。
主要特點
本書可作為計算機科學第一門課程的教材或參考書。本書側重於解決問題,並根據需要引入相應的語言特性來解決面臨的問題。我們沒有採用傳統的語言元素結構,而是圍繞著學生普遍感興趣的問題來組織教材的內容。因此,在本書中,讀者不會看到類似於“迴圈
結構”和“選擇結構”等章節標題,而是會看到“天體”和“密碼以及其他奧秘”等章節標題。
貫穿全書,所有的概念都是使用螺旋式模型引入的。由於Python的語法易於學習,我們可以快速介紹標準程序設計結構的基礎知識。隨著學生深入學習本書的內容,更多有關程序設計結構的細節內容和背景知識將被逐漸添加到工具箱中。這樣,學生就可以在解決問題的同時接觸到重要的計算機科學相關概念。
例如,在呈現有關函數的概念時,我們演示了如何採用這種螺旋式方法以不同方式涉及同一個特定的主題。學生在第1章中就開始學習編寫帶參數的函數。接著,在第2章中介紹帶返回值的函數。在第6章中,學生會學習如何將函數作為參數傳遞給其他函數,以及有關Python作用範圍規則的詳細信息。在第8章中,學生將學習Python的關鍵字參數和可選參數。第9章將介紹遞迴函數。在第10章中,學生將學習如何編寫作為類方法的函數。在第12章中,學生將學習如何編寫抽象方法。
第3版新增內容
第3版包含Python 3.8中的許多更新內容和新特性。在保留面向問題求解方法的同時,我們還在第3版中添加了許多教學輔助工具,以更好地說明和突出Python的程序設計結構。
例如,每一個新引入的函數或者方法都以表格的形式進行總結。
input函數
函數 說明
input(prompt) 顯示提示信息,然後在使用者按enter或者return鍵確認時返回使用者鍵入的任何字元所組成的字串。返回的字串中不包括enter或者return鍵
此外,第3版還包括以下新內容:
使用“摘要總結”框來總結前文的重要知識點。
摘要總結 清單是不同物件的有序集合。清單的表示方式是包括在方括號中的以逗號分隔的值。
使用“注意事項”框來提醒學生注意可能的陷阱,並提供避免錯誤的技巧。
注意事項 一定要記住在循環體中更新while迴圈條件,以避免無限閉環。
使用“最佳程序設計實踐”框來提供求解問題的策略,以及編寫可讀性強、易於維護的代碼的技巧。
最佳程序設計實踐 使用自頂向下的設計將一個大問題分解成更小的、可管理的任務。這個過程也被稱為逐步求精。
使用如下格式的Python代碼,以便學生更好地看清楚其中的語法元素。
作為對教師和學生回饋的響應,我們增加了附錄D,其中提供了各章中部分“動手實踐”的答案。
在第5章中,我們更新了訪問在線資料的方法。新的示例處理目前流行的在線資料格式CSV和JSON。
同樣,從第5章開始更新了字串格式—目前我們使用字串的format方法。
在第10章以及後續章節中,創建類時我們使用雙底線(_?_)首碼來定義執行個體變數名以實現封裝。
變數名和函數名遵循標準的駝峰式命名規範。
如何使用本書
章節組織結構
本書分為三個部分。第1~5章介紹所有的關鍵控制結構和Python資料類型,強調簡單的命令式程序設計結構,例如變數、迴圈結構和選擇結構。前5章的內容涵蓋所有主要的Python資料類型,包括整數、浮點數、字串、清單、字典、元組和檔。
在第1章中,我們通過應用示例的方式引入物件的概念。從某種意義上說,Python程序設計方法中的一切皆是物件。從通用的程序設計概念和Python提供的模組開始,能使我們在不引入額外複雜性的情況下解決更有趣的問題。例如,我們在第1章中使用turtle(海龜)圖形模組來介紹簡單的圖形。在第6章中,我們通過使用一個簡單的圖像物件來介紹影像處理,該圖像物件自動從檔中載入圖像,但允許學生獲取和設置圖元值。
接下來的章節將展開闡述第1~5章中介紹的概念。第6~9章在引入其他問題求解模式的同時,為學生提供了進一步熟悉基本的程序設計概念的機會。學生還將進一步瞭解Python的內部機制。
第10~13章強調物件導向的程序設計,並介紹設計和構建類所需的概念。在引入這些主題時,學生應該已經熟悉物件的思想,因此,構建自訂的物件自然而然成為下一步的目標。這部分的第一個示例強調多個真實物件之間交互的重要性。在實現了簡單的類之後,我們通過創建一個圖形庫以及將電子遊戲作為turtle模組的擴展來自然而然地引入繼承的概念。
教學建議
本書的講授可以採用若幹不同的方法,圖P-1提供了一些講授方法。第一種方法是按照章節順序進行講授。教師可以在一個學期內講完整本書的內容,也可以在兩個學期內講完,因為本書提供了足夠多的探索性材料以滿足整個學年的授課要求。第二種方法是先講授第1~5章,然後跳轉到第10~13章。這種方法在命令式程序設計和物件導向程序設計之間提供了一種平衡,這種平衡非常適用於一個學期的教學計畫。如果還有額外的時間,則可以選擇第6~9章中的部分內容進行教學,然後再繼續講授第10~13章。另一個建議是在入門課程中講授第1~9章,該課程只涉及命令式程序設計和物件的使用。
圖P-1 本書的閱讀和講授路線圖
如何使用練習題
本書包括三種練習題。第一種練習題是“動手實踐”中的一些習題,要求學生嘗試運行作為章節內容的代碼。通過這些練習,學生可以通過代碼來學習或者自主探索。第二種練習題是“動手實踐”中的另外一些習題,要求學生修改或者擴展章節內容中提供的代碼。書中常常會先提供一個簡單的代碼版本,要求學生修改簡單代碼以改進或者添加其他功能。第三種練習題是每章末尾的程序設計練習題,要求學生根據描述實現完整的程序設計項目,這些項目與對應章節所涵蓋的內容相關,但不涉及擴展或者修改已提供的代碼。
貫穿全書,我們在每一節中都包含了練習題。這些練習題以不同的方式組織,讀者可以採用以下多種方式加以使用:
如果是自學本書,則“動手實踐”練習題是很好的突破點,讀者可以隨時停下閱讀,動手實踐所學的知識。
教師可能會發現,許多練習題包含課堂上要涵蓋的授課內容,這些內容可作為學生在課堂上的閱讀材料的補充。
在傳統的課堂教學中,教師可以將練習題佈置為家庭作業。讀者應該感到幸運的是,在計算機科學入門課程中就開始涉及諸多小型程序設計任務。通常學生在一個學期內能夠完成30多個小型程序設計任務。
也可以把本書作為計算機科學“動手實踐”導論課程的一部分。教師可以先花少量的時間講授和強化章節要點,但大部分的課堂時間應該讓學生去完成作為補充閱讀的練習題。這種教學方式順應了計算機科學教育主動學習的發展趨勢,同時也深受學生的歡迎。
各章的關鍵主題
表P-1列出了每一章中重點介紹的問題,以及該章中引入的計算機科學關鍵概念。
表P-1 問題和關鍵概念
章 關鍵問題 計算機科學概念
第1章 繪製多邊形和近似圓形,通用問題求解策略 數值資料類型、設定陳述式、使用turtle物件、簡單的for迴圈結構、簡單的函數
第2章 估算圓周率的各種方法 累加器模式、簡單選擇語句、布林運算式、具有返回值的函數、math(數學)模組、random(隨機)模組
第3章 密碼算法, 包括置換加密算法、替換加密算法 字串資料型別和方法、模運算、使用者輸入、字串的選擇和反覆運算
第4章 計算簡單統計量 Python清單、元組和字典資料類型
第5章 使用大資料集計算統計量 檔輸入和輸出、while迴圈、字串格式、讀取CSV和JSON格式的在線資料
第6章 數字影像處理、圖元處理、圖像的放大和縮小、邊緣檢測算法 嵌套迴圈、把函數作為參數傳遞、作用範圍規則
第7章 大資料集的聚類分析與可視化 Python清單和字典資料類型、檔讀取和while迴圈的進一步闡述
第8章 破解置換加密算法和替換加密算法的方法、頻率分析 在清單和字典中存儲有意義的資料、字串處理、規則運算式模組
第9章 分形圖形的概念,如何使用分形圖形來類比樹木、灌木、雪花和其他自然界的物體 遞迴、語法和生長規則
第10章 計算和繪製大型天體之間的相互作用 物件導向的設計、類的構造、執行個體變數和方法
第11章 模擬捕食者和獵物之間的關係 在類比中使用物件,許多具有簡單行為的物件可能導致有趣的複雜結果
第12章 設計具有點、線、多邊形和其他形狀的物件導向的圖形庫 繼承和多態性,使用turtle模組實現更高層次的圖形庫
第13章 設計和實現一個簡單的電子遊戲 事件驅動的程序設計、繼承、靜態變數和靜態方法
補充資料
本書提供可供教師下載的補充資料,包括各章節的練習題答案、試題庫和PPT。各章列出的原始程式碼也提供給學生和教師。想要獲取更多相關信息,請訪問網址。
作者聯繫方式
如果讀者有任何疑問,或者發現本書中存在技術錯誤,請通過mail聯繫Julie Anderson。我們將在本書的官方網站上發佈更正信息。
致謝
感謝所有的合作夥伴、同事和家人對本書的貢獻。
首先感謝出版商Jones & Bartlett Lear
目次
出版者的話
譯者序
前言
第1章 Python導論 1
1.1 本章目標 1
1.2 什麼是計算機科學 1
1.3 為什麼要學習計算機科學 2
1.3.1 計算機科學的日常應用 2
1.3.2 計算機科學的重要性 3
1.4 問題求解的策略 3
1.5 Python概述 5
1.5.1 基本元素 6
1.5.2 命名物件 10
1.5.3 抽象 15
1.5.4 迴圈 22
1.6 本章小結 28
關鍵術語 28
Python關鍵字 29
程序設計練習題 29
第2章 πthon:估算圓周率的值 30
2.1 本章目標 30
2.2 圓周率是什麼 30
2.3 有關math模組的進一步討論 31
2.4 阿基米德方法 32
2.4.1 Python實現 33
2.4.2 開發一個計算圓周率pi的函數 34
2.5 累加器估算法 36
2.5.1 累加器模式 36
2.5.2 項的總和:萊布尼茨公式 37
2.5.3 項的乘積:沃利斯公式 39
2.6 蒙特卡羅模擬 41
2.6.1 布林運算式 43
2.6.2 複合布林運算式和邏輯運算子 44
2.6.3 選擇語句 45
2.6.4 實現模擬 48
2.6.5 使用圖形可視化結果 50
2.7 本章小結 53
關鍵術語 53
Python關鍵字、模組和命令 53
程序設計練習題 54
第3章 密碼以及其他奧秘 55
3.1 本章目標 55
3.2 字串資料型別 55
3.2.1 拼接 56
3.2.2 重複 56
3.2.3 索引 57
3.2.4 字串切片 58
3.2.5 字串搜索 59
3.2.6 字串方法 60
3.2.7 字元函數 62
3.3 編碼消息和解碼消息 64
3.4 置換加密算法 64
3.4.1 使用置換進行加密 64
3.4.2 解密置換後的消息 66
3.4.3 讀取用戶輸入 68
3.5 替換加密算法 69
3.6 創建金鑰 71
3.7 維吉尼亞加密算法 76
3.8 本章小結 80
關鍵術語 81
Python關鍵字、函數和常量 81
程序設計練習題 82
第4章 Python集合導論 83
4.1 本章目標 83
4.2 什麼是資料 83
4.3 存儲用於處理的資料 83
4.3.1 再論字串 83
4.3.2 列表 85
4.4 計算資料的統計量 90
4.4.1 簡單離散度度量 90
4.5 中心趨勢度量 92
4.5.1 均值 92
4.5.2 中值 93
4.5.3 眾數 95
4.6 頻率分佈 100
4.6.1 使用字典計算頻率分佈表 100
4.6.2 不使用字典計算頻率分佈表 101
4.6.3 可視化頻率分佈 103
4.7 離散度:標準差 105
4.8 本章小結 107
關鍵術語 107
Python關鍵字、函數和方法 107
程序設計練習題 108
第5章 大資料:檔輸入和輸出 109
5.1 本章目標 109
5.2 使用檔處理大資料集 109
5.2.1 文字檔 109
5.2.2 反覆運算文件中的文本行 111
5.2.3 寫入檔 112
5.2.4 字串格式化 113
5.2.5 其他檔讀取方法 115
5.3 從互聯網上讀取資料 117
5.3.1 使用CSV檔 117
5.3.2 使用while迴圈處理資料 118
5.3.3 列表解析 121
5.3.4 從互聯網上讀取JSON資料 125
5.4 數據相關性 128
5.5 本章小結 129
關鍵術語 129
Python關鍵字和函數 130
程序設計練習題 130
第6章 影像處理 131
6.1 本章目標 131
6.2 什麼是數字影像處理 131
6.2.1 RGB色彩模型 131
6.2.2 cImage模組 132
6.3 基本影像處理 136
6.3.1 圖像負片 136
6.3.2 灰度圖像 138
6.3.3 一個通用的解決方案:圖元映射器 140
6.4 參數、參數傳遞和作用範圍 143
6.4.1 通過賦值調用的參數傳遞 144
6.4.2 名稱空間 145
6.4.3 調用函數和查找名稱 148
6.4.4 模組和名稱空間 150
6.5 高級影像處理 151
6.5.1 圖像縮放 151
6.5.2 圖像拉伸:另一種視角 153
6.5.3 翻轉圖像 156
6.5.4 邊緣檢測 158
6.6 本章小結 162
關鍵術語 163
Python關鍵字、函數和變數 163
程序設計練習題 163
第7章 資料採擷:聚類分析 164
7.1 本章目標 164
7.2 什麼是資料採擷 164
7.3 聚類分析:一個簡單的示例 164
7.4 在簡單資料集上實現聚類分析 165
7.4.1 兩點之間的距離 165
7.4.2 聚類和中心點 167
7.4.3 K-均值聚類分析算法 167
7.4.4 K-均值算法的實現 168
7.4.5 K-均值算法的實現(續) 172
7.5 實現聚類分析:地震資料 176
7.5.1 檔處理 176
7.5.2 可視化 178
7.6 聚類分析的缺陷及解決方法 179
7.7 本章小結 180
關鍵術語 180
Python關鍵字 181
程序設計練習題 181
第8章 密碼分析學 182
8.1 本章目標 182
8.2 概述 182
8.3 破解圍欄加密算法 182
8.3.1 使用字典檢查結果 183
8.3.2 暴力破解法 184
8.3.3 一種圍欄解密算法 186
8.4 破解替換加密算法
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。