商品簡介
作者簡介
名人/編輯推薦
序
目次
商品簡介
本書面向Python初學者,采用模塊方式呈現知識要點,而非百科全書式的語法大全。書中介紹了數值、字符串、列表、字典、集合、控制結構、函數、遞歸、排序、面向物件編程、文件操作等基礎知識,通過大量案例來演示這些技術,重視計算思維的培養,由淺入深地將解決問題的完整方案一步步呈現在讀者面前。本版新增了面向數據科學的程序示例和練習,擴展了有關字符串和列表的內容,並引入了海龜圖形和遊戲編程等新的數據包。本書既可作為高等院校計算機專業第 一門程序設計課的教材,也可供Python愛好者自學參考。
作者簡介
凱·霍斯特曼(Cay Horstmann) 聖何塞州立大學計算機科學系教授,Java的倡導者,經常在開發人員會議上發表演講。他是《Java核心技術》的作者,同時也關注Python、Scala、C++等語言,為專業程序員和計算機科學專業學生編寫過數十本圖書。
蘭斯·尼塞斯(Rance Necaise) 蘭道爾夫-麥肯學院計算機科學系副教授,撰寫了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技術書籍。
蘭斯·尼塞斯(Rance Necaise) 蘭道爾夫-麥肯學院計算機科學系副教授,撰寫了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技術書籍。
名人/編輯推薦
面向Python初學者,循序漸進地將問題解決方案一步步呈現在讀者面前,新版添加了面向數據科學的示例及練習
序
本書是基於Python語言的計算機程序設計導論教科書,重點是介紹Python語言的基礎知識,目的是提供有效的Python語言學習方法。本書面向具有不同興趣和能力的廣大學生群體,適用於計算機科學、電子工程和其他學科首次接觸程序設計的學生的初級課程。本書不需要讀者有任何程序設計經驗,只需要有少量的高中數學知識即可。出於教學上的原因,本書采用Python 3,因為Python 3比Python 2更為規範。
本書的主要特點如下。
夯實基礎。本書采用了傳統的方法,首先強調控制結構、函數、過程分解以及內置數據結構的重要性。在前幾章中,只在適當的時候才使用物件。第9章才開始學習設計和實現自定義的類。
使用操作指南和實訓案例引導學生走向成功。初級程序員經常會有這樣的疑問:“我該如何開始?現在應該怎麼辦?”當然,像程序設計這樣復雜的活動不能簡化為菜譜式的指令。然而,循序漸進的指導非常有助於學生樹立學習的信心,也有助於為解決手頭的任務提供思路。本書每章中的“問題求解”部分強調設計和規劃的重要性,“操作指南”環節幫助學生完成常見的程序設計任務,大量的“實訓案例”則演示如何應用相關概念以解決有趣的問題。
清晰明確地制訂問題的解決策略。實用的、循序漸進的技術演示有助於學生設計和評估程序設計問題的解決方案。這些策略將在最恰當的時候引入,以為學生掃清成功道路上的障礙。本書涉及的問題解決策略包括:
算法設計(借助偽代碼加以展示)
編程前首先進行手工演算(手工計算示例)
流程圖
測試用例
手工跟蹤程序執行過程
故事板
首先求解簡單的問題
可復用的函數
逐步求精
自適應算法
通過操作實體物件發現算法
跟蹤物件
物件數據的模式
遞歸思維
估測算法的運行時間
熟能生巧。很顯然,學習程序設計的學生需要能夠實現復雜的程序,但他們首先需要樹立成功的信心。本書每章都包含許多練習題,要求學生逐步執行復雜度遞增的任務:跟蹤程序代碼並了解其運行效果,根據準備好的材料生成程序片段,最終實現簡單的程序。在每章的結尾還提供了額外的復習題和編程題。
重點突出,技術準確。百科全書式的知識覆蓋對於初學者的幫助不大,同樣,把材料簡化成一個簡潔的要點列表對初學者的幫助也微乎其微。在本書中,知識要點是以易於理解的模塊來呈現的,當讀者準備好接受進一步的信息時,則通過單獨的注釋引導他們深入最佳實踐或者語言特性中。
第3版的新特色
對數據科學的關注。數據科學的方法變得如此重要,以至於許多學科的學生(不僅僅是計算機科學)都迫不及待地希望學習程序設計的基礎知識。Python由於其邏輯結構、可供探索的交互式編程庫以及大量用於數據操作的庫,被定位為初出茅廬的數據科學家的唯一“入門”語言。
本書采用了一種行之有效的教學方法,而不僅僅局限於計算機科學專業的程序設計教學。在第3版中,我們提供了更多聚焦於數據科學各個方面的程序示例和練習題。
適量的Python語言知識。在編寫第3版時,我們的目標是教授學生良好的程序設計方法和計算機科學知識。Python語言本身的使用並不是目的,我們將其作為達成目標的教學手段。
根據本書以前版本讀者的建議,在第3版中,我們擴展了有關字符串和列表的簡便操作方法。
更多的工具箱。在第2版中,廣受歡迎的一項擴展內容是引入了供讀者參考的“工具箱”模塊。在“工具箱”中,我們介紹了Python庫作為一種奇妙的“生態系統”,提供了許多實用的數據包。這些擴展包使得學生可以執行一些有用的工作任務,例如統計計算、繪制圖表、發送電子郵件、處理電子表格和分析網頁等。Python庫被置於計算機科學原理的背景之下,學生將學習如何將這些原理應用於解決現實世界中的實際問題。每個工具箱都涉及許多新的復習題和編程題。
第3版新引入的工具箱包括海龜圖形工具箱和遊戲編程工具箱。
章節結構
圖1顯示了本書各章節之間的相互關係,以及各個主題的組織方式。本書的核心內容是第1~8章。第9章和第10章涵蓋面向物件的程序設計,第11章和第12章介紹算法設計和分析(學生在其他課程中將深入學習這些知識)。
圖形和圖像處理。通過編寫程序來創建圖形或者處理圖像,可以為學生提供復雜主題的有效可視化。第2章介紹了開源庫EzGraphics,以及如何使用EzGraphics繪制基本圖形。這個庫比Python的標準庫(Tkinter)更易於使用,同時支持簡單的圖像處理。第5章包含一個可選的海龜圖形工具箱。整本書中提供了諸多圖形處理的實訓案例以及練習題(復習題和編程題),所有這些內容都可以選擇性地用於教學。
練習題。各章結尾包含大量的復習題和編程題,涉及來自圖形學、數據科學和商業等應用領域中的實際問題。這些練習題可供選用,旨在激發學生的學習興趣,同時展現程序設計在實際應用領域中的價值。
網絡資源。本書提供了一套完整的在線資源。讀者可以通過本書官網www.wiley.com/go/pfe3訪問本書在線資源。在線資源網站包括以下內容:
本書所有的示例程序、工具箱和實訓案例的源代碼。
授課演示幻燈片(僅供教師使用)。
所有章節結尾的復習題和編程題的答案(僅供教師使用)。
一個側重於技能而不僅僅是術語的測試題庫(僅供教師使用)。測試題庫包括數量眾多的多項選擇題,可以使用文字處理器進行編輯,也可以導入課程管理系統中使用。
CodeCheck是一項創新的在線服務,允許教師自行設計自動評分的編程練習題。
圖1 本書各章節之間的相互關係
致謝
非常感謝John Wiley & Sons公司的Joanna Dingle、Crystal Franks、Graig Donini和Michael MacDougald以及負責出版服務的Vickie Piercey對本項目的幫助。特別感謝Cindy Johnson的辛勤工作,感謝她的正確判斷力和對細節驚人的關注力。
同時感謝卡爾加裡大學的Ben Stephenson在準備和評審補充材料方面所做的出色工作。
非常感謝為本書第3版的出版發行而辛勤工作的每個人,他們審閱了手稿,提出了寶貴的建議,並提醒我們關注本書的錯誤和遺漏。他們是:
William Bulko, University of Texas, Austin
John Conery, University of Oregon
Lee D. Cornell, Minnesota State University, Mankato
Mike Domaratzki, University of Manitoba
Rich Enbody, Michigan State University
Jackie Horton, University of Vermont
Winona Istre, University of Louisiana, Lafayette
Swami Iyer, University of Massachusetts, Boston
ToniAnn Marini, North Carolina State University
Melinda McDaniel, Georgia Institute of Technology
Shyamal Mitra, University of Texas, Austin
Ben Stephenson, University of Calgary
Mehmet Ulema, Manhattan College
David Wilkins, University of Oregon
每一個新版本都建立在以前版本的評論者、貢獻者和讀者的建議之上。我們感謝以下諸位所做的寶貴貢獻:
Claude Anderson, Rose Hulman Institute of Technology
Jim Carrier, Guilford Technical Community College
Gokcen Cilingir, Washington State University
Lee Cornell, Minnesota State University, Mankato
Akshaye Dhawan, Ursinus College
Dirk Grunwald, University of Colorado Boulder
Andrew Harrington, Loyola University Chicago
Byron Hoy, Stockton University
Debbie Keen, University of Kentucky
Nicholas A. Kraft, University of Alabama
Aaron Langille, Laurentian University
Maria Laurent-Rice, Orange Coast College
John McManus, Randolph-Macon College
Shyamal Mitra, University of Texas Austin
Chandan R. Rupakheti, Rose-Hulman Institute of Technology
John Schneider, Washington State University
Amit Singhal, University of Rochester
Ben Stephenson, University of Calgary
Amanda Stouder, Rose-Hulman Institute of Technology
Dave Sullivan, Boston University
Jay Summet, Georgia Institute of Technology
James Tam, University of Calgary
Krishnaprasad Thirunarayan, Wright State University
Leon Tietz, Minnesota State University, Mankato
Peter Tucker, Whitworth University
Frances VanScoy, West Virginia University
Dean Zeller, University of Northern Colorado
本書的主要特點如下。
夯實基礎。本書采用了傳統的方法,首先強調控制結構、函數、過程分解以及內置數據結構的重要性。在前幾章中,只在適當的時候才使用物件。第9章才開始學習設計和實現自定義的類。
使用操作指南和實訓案例引導學生走向成功。初級程序員經常會有這樣的疑問:“我該如何開始?現在應該怎麼辦?”當然,像程序設計這樣復雜的活動不能簡化為菜譜式的指令。然而,循序漸進的指導非常有助於學生樹立學習的信心,也有助於為解決手頭的任務提供思路。本書每章中的“問題求解”部分強調設計和規劃的重要性,“操作指南”環節幫助學生完成常見的程序設計任務,大量的“實訓案例”則演示如何應用相關概念以解決有趣的問題。
清晰明確地制訂問題的解決策略。實用的、循序漸進的技術演示有助於學生設計和評估程序設計問題的解決方案。這些策略將在最恰當的時候引入,以為學生掃清成功道路上的障礙。本書涉及的問題解決策略包括:
算法設計(借助偽代碼加以展示)
編程前首先進行手工演算(手工計算示例)
流程圖
測試用例
手工跟蹤程序執行過程
故事板
首先求解簡單的問題
可復用的函數
逐步求精
自適應算法
通過操作實體物件發現算法
跟蹤物件
物件數據的模式
遞歸思維
估測算法的運行時間
熟能生巧。很顯然,學習程序設計的學生需要能夠實現復雜的程序,但他們首先需要樹立成功的信心。本書每章都包含許多練習題,要求學生逐步執行復雜度遞增的任務:跟蹤程序代碼並了解其運行效果,根據準備好的材料生成程序片段,最終實現簡單的程序。在每章的結尾還提供了額外的復習題和編程題。
重點突出,技術準確。百科全書式的知識覆蓋對於初學者的幫助不大,同樣,把材料簡化成一個簡潔的要點列表對初學者的幫助也微乎其微。在本書中,知識要點是以易於理解的模塊來呈現的,當讀者準備好接受進一步的信息時,則通過單獨的注釋引導他們深入最佳實踐或者語言特性中。
第3版的新特色
對數據科學的關注。數據科學的方法變得如此重要,以至於許多學科的學生(不僅僅是計算機科學)都迫不及待地希望學習程序設計的基礎知識。Python由於其邏輯結構、可供探索的交互式編程庫以及大量用於數據操作的庫,被定位為初出茅廬的數據科學家的唯一“入門”語言。
本書采用了一種行之有效的教學方法,而不僅僅局限於計算機科學專業的程序設計教學。在第3版中,我們提供了更多聚焦於數據科學各個方面的程序示例和練習題。
適量的Python語言知識。在編寫第3版時,我們的目標是教授學生良好的程序設計方法和計算機科學知識。Python語言本身的使用並不是目的,我們將其作為達成目標的教學手段。
根據本書以前版本讀者的建議,在第3版中,我們擴展了有關字符串和列表的簡便操作方法。
更多的工具箱。在第2版中,廣受歡迎的一項擴展內容是引入了供讀者參考的“工具箱”模塊。在“工具箱”中,我們介紹了Python庫作為一種奇妙的“生態系統”,提供了許多實用的數據包。這些擴展包使得學生可以執行一些有用的工作任務,例如統計計算、繪制圖表、發送電子郵件、處理電子表格和分析網頁等。Python庫被置於計算機科學原理的背景之下,學生將學習如何將這些原理應用於解決現實世界中的實際問題。每個工具箱都涉及許多新的復習題和編程題。
第3版新引入的工具箱包括海龜圖形工具箱和遊戲編程工具箱。
章節結構
圖1顯示了本書各章節之間的相互關係,以及各個主題的組織方式。本書的核心內容是第1~8章。第9章和第10章涵蓋面向物件的程序設計,第11章和第12章介紹算法設計和分析(學生在其他課程中將深入學習這些知識)。
圖形和圖像處理。通過編寫程序來創建圖形或者處理圖像,可以為學生提供復雜主題的有效可視化。第2章介紹了開源庫EzGraphics,以及如何使用EzGraphics繪制基本圖形。這個庫比Python的標準庫(Tkinter)更易於使用,同時支持簡單的圖像處理。第5章包含一個可選的海龜圖形工具箱。整本書中提供了諸多圖形處理的實訓案例以及練習題(復習題和編程題),所有這些內容都可以選擇性地用於教學。
練習題。各章結尾包含大量的復習題和編程題,涉及來自圖形學、數據科學和商業等應用領域中的實際問題。這些練習題可供選用,旨在激發學生的學習興趣,同時展現程序設計在實際應用領域中的價值。
網絡資源。本書提供了一套完整的在線資源。讀者可以通過本書官網www.wiley.com/go/pfe3訪問本書在線資源。在線資源網站包括以下內容:
本書所有的示例程序、工具箱和實訓案例的源代碼。
授課演示幻燈片(僅供教師使用)。
所有章節結尾的復習題和編程題的答案(僅供教師使用)。
一個側重於技能而不僅僅是術語的測試題庫(僅供教師使用)。測試題庫包括數量眾多的多項選擇題,可以使用文字處理器進行編輯,也可以導入課程管理系統中使用。
CodeCheck是一項創新的在線服務,允許教師自行設計自動評分的編程練習題。
圖1 本書各章節之間的相互關係
致謝
非常感謝John Wiley & Sons公司的Joanna Dingle、Crystal Franks、Graig Donini和Michael MacDougald以及負責出版服務的Vickie Piercey對本項目的幫助。特別感謝Cindy Johnson的辛勤工作,感謝她的正確判斷力和對細節驚人的關注力。
同時感謝卡爾加裡大學的Ben Stephenson在準備和評審補充材料方面所做的出色工作。
非常感謝為本書第3版的出版發行而辛勤工作的每個人,他們審閱了手稿,提出了寶貴的建議,並提醒我們關注本書的錯誤和遺漏。他們是:
William Bulko, University of Texas, Austin
John Conery, University of Oregon
Lee D. Cornell, Minnesota State University, Mankato
Mike Domaratzki, University of Manitoba
Rich Enbody, Michigan State University
Jackie Horton, University of Vermont
Winona Istre, University of Louisiana, Lafayette
Swami Iyer, University of Massachusetts, Boston
ToniAnn Marini, North Carolina State University
Melinda McDaniel, Georgia Institute of Technology
Shyamal Mitra, University of Texas, Austin
Ben Stephenson, University of Calgary
Mehmet Ulema, Manhattan College
David Wilkins, University of Oregon
每一個新版本都建立在以前版本的評論者、貢獻者和讀者的建議之上。我們感謝以下諸位所做的寶貴貢獻:
Claude Anderson, Rose Hulman Institute of Technology
Jim Carrier, Guilford Technical Community College
Gokcen Cilingir, Washington State University
Lee Cornell, Minnesota State University, Mankato
Akshaye Dhawan, Ursinus College
Dirk Grunwald, University of Colorado Boulder
Andrew Harrington, Loyola University Chicago
Byron Hoy, Stockton University
Debbie Keen, University of Kentucky
Nicholas A. Kraft, University of Alabama
Aaron Langille, Laurentian University
Maria Laurent-Rice, Orange Coast College
John McManus, Randolph-Macon College
Shyamal Mitra, University of Texas Austin
Chandan R. Rupakheti, Rose-Hulman Institute of Technology
John Schneider, Washington State University
Amit Singhal, University of Rochester
Ben Stephenson, University of Calgary
Amanda Stouder, Rose-Hulman Institute of Technology
Dave Sullivan, Boston University
Jay Summet, Georgia Institute of Technology
James Tam, University of Calgary
Krishnaprasad Thirunarayan, Wright State University
Leon Tietz, Minnesota State University, Mankato
Peter Tucker, Whitworth University
Frances VanScoy, West Virginia University
Dean Zeller, University of Northern Colorado
目次
出版者的話
譯者序
前言
第1章 導論 1
1.1 計算機程序 1
1.2 計算機組成結構 2
1.3 Python程序設計語言 4
1.4 熟悉程序設計環境 5
1.5 分析我們的第一個程序 9
1.6 錯誤信息 11
1.7 問題求解:算法設計 12
本章小結 18
複習題 19
編程題 20
第2章 數值和字符串編程 22
2.1 變量 22
2.1.1 定義變量 22
2.1.2 數值類型 24
2.1.3 變量名稱 25
2.1.4 常量 25
2.1.5 注釋 26
2.2 算術運算 28
2.2.1 基本的算術運算 28
2.2.2 乘冪 28
2.2.3 整除和餘數 29
2.2.4 調用函數 30
2.2.5 數學函數 31
2.3 問題求解:先手工演算 35
2.4 字符串 38
2.4.1 字符串類型 38
2.4.2 字符串的拼接和重複 38
2.4.3 數值和字符串之間的相互轉換 39
2.4.4 字符串和字符 40
2.4.5 字符串方法 41
2.5 輸入和輸出 43
2.5.1 用戶輸入 43
2.5.2 數值輸入 44
2.5.3 格式化輸出 45
2.6 圖形應用:簡單繪圖 54
2.6.1 創建窗口 54
2.6.2 直線和多邊形 55
2.6.3 填充形狀和顏色 57
2.6.4 橢圓、圓和文本 59
本章小結 64
複習題 65
編程題 68
第3章 選擇結構 76
3.1 if語句 76
3.2 關係運算符 80
3.3 嵌套分支 87
3.4 多分支結構 91
3.5 問題求解:流程圖 96
3.6 問題求解:測試用例 99
3.7 布爾變量和運算符 100
3.8 分析字符串 105
3.9 應用案例:輸入驗證 107
本章小結 120
複習題 121
編程題 127
第4章 循環結構 136
4.1 while語句 136
4.2 問題求解:手工跟蹤 142
4.3 應用案例:處理哨兵值 145
4.4 問題求解:故事板 148
4.5 常用循環算法 150
4.5.1 求和和平均數 150
4.5.2 匹配項計數 151
4.5.3 提示輸入直到找到匹配項 151
4.5.4 最大值和最小值 151
4.5.5 比較相鄰值 152
4.6 for循環 153
4.7 嵌套循環 161
4.8 處理字符串 167
4.8.1 統計匹配項 167
4.8.2 查找所有匹配項 167
4.8.3 找到第一個或者最後一個匹配項 167
4.8.4 驗證字符串 168
4.8.5 創建新的字符串 169
4.9 應用案例:隨機數和仿真 170
4.9.1 生成隨機數 170
4.9.2 模擬擲骰子 171
4.9.3 蒙特卡羅方法 172
4.10 圖形應用:數字圖像處理 176
4.10.1 過濾圖像 176
4.10.2 重新配置圖像 179
4.11 問題求解:先易後難 180
本章小結 185
複習題 186
編程題 190
第5章 函數 200
5.1 作為黑盒的函數 200
5.2 實現和測試函數 201
5.2.1 實現函數 201
5.2.2 測試函數 202
5.2.3 包含函數的程序 202
5.3 參數傳遞 205
5.4 返回值 207
5.5 不帶返回值的函數 214
5.6 問題求解:可複用函數 217
5.7 問題求解:逐步求精 218
5.8 變量的作用範圍 231
5.9 圖形應用:構建圖像處理工具包 237
5.9.1 入門 237
5.9.2 比較圖像 238
5.9.3 調整圖像亮度 238
5.9.4 旋轉圖像 240
5.9.5 使用工具包 241
5.10 遞歸函數(可選) 245
本章小結 255
複習題 256
編程題 259
第6章 列表 266
6.1 列表的基本屬性 266
6.1.1 創建列表 266
6.1.2 訪問列表元素 267
6.1.3 遍歷列表 269
6.1.4 列表引用 269
6.2 列表操作 273
6.2.1 附加元素 273
6.2.2 插入元素 273
6.2.3 查找元素 274
6.2.4 刪除元素 275
6.2.5 拼接和複製 276
6.2.6 相等性測試 276
6.2.7 求和、最大值、最小值和排序 276
6.2.8 複製列表 277
6.3 常用列表算法 279
6.3.1 填充列表 279
6.3.2 組合列表元素 279
6.3.3 元素分隔符 280
6.3.4 最大值和最小值 280
6.3.5 線性查找 281
6.3.6 收集和統計匹配項 281
6.3.7 刪除匹配項 282
6.3.8 交換元素 283
6.3.9 讀取輸入 284
6.4 將列表與函數一起使用 288
6.5 問題求解:修改算法 295
6.6 問題求解:通過操作實體對象發現算法 300
6.7 表格 304
6.7.1 創建表格 304
6.7.2 訪問元素 305
6.7.3 定位相鄰元素 305
6.7.4 計算行總計和列總計 306
6.7.5 將表格與函數一起使用 306
本章小結 314
複習題 315
編程題 318
第7章 文件和異常 325
7.1 讀取和寫入文本文件 325
7.1.1 打開文件 325
7.1.2 讀取文件 326
7.1.3 寫入文件 327
7.1.4 文件處理示例 327
7.2 文本輸入和輸出 328
7.2.1 遍歷文件中的行 329
7.2.2 讀取單詞 330
7.2.3 讀取字符 332
7.2.4 讀取記錄 333
7.3 命令行參數 340
7.4 二進制文件和隨機訪問(可選) 352
7.4.1 讀取和寫入二進制文件 352
7.4.2 隨機訪問 353
7.4.3 圖像文件 353
7.4.4 處理BMP文件 355
7.5 異常處理 361
7.5.1 引發異常 361
7.5.2 處理異常 362
7.5.3 finally子句 364
7.6 應用案例:處理輸入錯誤 367
本章小結 378
複習題 379
編程題 380
第8章 集合和字典 390
8.1 集合 390
8.1.1 創建和使用集合 390
8.1.2 添加和刪除元素 392
8.1.3 子集 393
8.1.4 並集、交集和差集 393
8.2 字典 400
8.2.1 創建字典 401
8.2.2 訪問字典的值 401
8.2.3 添加和修改數據項 401
8.2.4 刪除數據項 402
8.2.5 遍歷字典 403
8.3 複雜的數據結構 409
8.3.1 包含集合的字典 409
8.3.2 包含列表的字典 411
本章小結 420
複習題 421
編程題 423
第9章 對象和類 426
9.1 面向對象的程序設計 426
9.2 實現一個簡單的類 427
9.3 指定類的公共接口 430
9.4 設計數據表示 431
9.5 構造函數 432
9.6 實現方法 435
9.7 測試類 438
9.8 問題求解:跟蹤對象 445
9.9 問題求解:對象數據的模式 448
9.9.1 使用總計 448
9.9.2 統計事件 449
9.9.3 收集值 449
9.9.4 管理對象的屬性 449
9.9.5 使用不同的狀態建模對象 450
9.9.6 描述對象的位置 451
9.10 對象引用 451
9.10.1 共享引用 452
9.10.2 None引用 453
9.10.3 self引用 454
9.10.4 對象的生命週期 454
9.11 應用案例:實現一個Fraction類 456
9.11.1 Fraction類的設計 456
9.11.2 構造函數 457
9.11.3 特殊方法 458
9.11.4 算術運算 459
9.11.5 邏輯運算 460
本章小結 467
複習題 468
編程題 469
第10章 繼承 475
10.1 繼承的層次結構 475
10.2 實現子類 479
10.3 調用超類的構造函數 482
10.4 重寫方法 485
10.5 多態 488
10.6 應用案例:幾何圖形類的層次結構 500
10.6.1 基類 500
10.6.2 基本形狀 502
10.6.3 形狀組 505
本章小結 514
複習題 514
編程題 515
第11章 遞歸 520
11.1 三角形數字之再探討 520
11.2 問題求解:遞歸思維 523
11.3 遞歸輔助函數 527
11.4 遞歸的效率 528
11.5 排列 533
11.6 回溯 536
11.7 相互遞歸 543
本章小結 550
複習題 550
編程題 551
第12章 排序和查找 556
12.1 選擇排序算法 556
12.2 選擇排序算法的性能測量 558
12.3 選擇排序算法的性能分析 559
12.4 合併排序算法 563
12.5 分析合併排序算法 565
12.6 查找算法 569
12.6.1 線性查找 570
12.6.2 二分查找 571
12.7 問題求解:估計算法的運行時間 573
12.7.1 線性時間 573
12.7.2 二次時間 574
12.7.3 三角形模式 575
12.7.4 對數時間 576
本章小結 581
複習題 581
編程題 584
譯者序
前言
第1章 導論 1
1.1 計算機程序 1
1.2 計算機組成結構 2
1.3 Python程序設計語言 4
1.4 熟悉程序設計環境 5
1.5 分析我們的第一個程序 9
1.6 錯誤信息 11
1.7 問題求解:算法設計 12
本章小結 18
複習題 19
編程題 20
第2章 數值和字符串編程 22
2.1 變量 22
2.1.1 定義變量 22
2.1.2 數值類型 24
2.1.3 變量名稱 25
2.1.4 常量 25
2.1.5 注釋 26
2.2 算術運算 28
2.2.1 基本的算術運算 28
2.2.2 乘冪 28
2.2.3 整除和餘數 29
2.2.4 調用函數 30
2.2.5 數學函數 31
2.3 問題求解:先手工演算 35
2.4 字符串 38
2.4.1 字符串類型 38
2.4.2 字符串的拼接和重複 38
2.4.3 數值和字符串之間的相互轉換 39
2.4.4 字符串和字符 40
2.4.5 字符串方法 41
2.5 輸入和輸出 43
2.5.1 用戶輸入 43
2.5.2 數值輸入 44
2.5.3 格式化輸出 45
2.6 圖形應用:簡單繪圖 54
2.6.1 創建窗口 54
2.6.2 直線和多邊形 55
2.6.3 填充形狀和顏色 57
2.6.4 橢圓、圓和文本 59
本章小結 64
複習題 65
編程題 68
第3章 選擇結構 76
3.1 if語句 76
3.2 關係運算符 80
3.3 嵌套分支 87
3.4 多分支結構 91
3.5 問題求解:流程圖 96
3.6 問題求解:測試用例 99
3.7 布爾變量和運算符 100
3.8 分析字符串 105
3.9 應用案例:輸入驗證 107
本章小結 120
複習題 121
編程題 127
第4章 循環結構 136
4.1 while語句 136
4.2 問題求解:手工跟蹤 142
4.3 應用案例:處理哨兵值 145
4.4 問題求解:故事板 148
4.5 常用循環算法 150
4.5.1 求和和平均數 150
4.5.2 匹配項計數 151
4.5.3 提示輸入直到找到匹配項 151
4.5.4 最大值和最小值 151
4.5.5 比較相鄰值 152
4.6 for循環 153
4.7 嵌套循環 161
4.8 處理字符串 167
4.8.1 統計匹配項 167
4.8.2 查找所有匹配項 167
4.8.3 找到第一個或者最後一個匹配項 167
4.8.4 驗證字符串 168
4.8.5 創建新的字符串 169
4.9 應用案例:隨機數和仿真 170
4.9.1 生成隨機數 170
4.9.2 模擬擲骰子 171
4.9.3 蒙特卡羅方法 172
4.10 圖形應用:數字圖像處理 176
4.10.1 過濾圖像 176
4.10.2 重新配置圖像 179
4.11 問題求解:先易後難 180
本章小結 185
複習題 186
編程題 190
第5章 函數 200
5.1 作為黑盒的函數 200
5.2 實現和測試函數 201
5.2.1 實現函數 201
5.2.2 測試函數 202
5.2.3 包含函數的程序 202
5.3 參數傳遞 205
5.4 返回值 207
5.5 不帶返回值的函數 214
5.6 問題求解:可複用函數 217
5.7 問題求解:逐步求精 218
5.8 變量的作用範圍 231
5.9 圖形應用:構建圖像處理工具包 237
5.9.1 入門 237
5.9.2 比較圖像 238
5.9.3 調整圖像亮度 238
5.9.4 旋轉圖像 240
5.9.5 使用工具包 241
5.10 遞歸函數(可選) 245
本章小結 255
複習題 256
編程題 259
第6章 列表 266
6.1 列表的基本屬性 266
6.1.1 創建列表 266
6.1.2 訪問列表元素 267
6.1.3 遍歷列表 269
6.1.4 列表引用 269
6.2 列表操作 273
6.2.1 附加元素 273
6.2.2 插入元素 273
6.2.3 查找元素 274
6.2.4 刪除元素 275
6.2.5 拼接和複製 276
6.2.6 相等性測試 276
6.2.7 求和、最大值、最小值和排序 276
6.2.8 複製列表 277
6.3 常用列表算法 279
6.3.1 填充列表 279
6.3.2 組合列表元素 279
6.3.3 元素分隔符 280
6.3.4 最大值和最小值 280
6.3.5 線性查找 281
6.3.6 收集和統計匹配項 281
6.3.7 刪除匹配項 282
6.3.8 交換元素 283
6.3.9 讀取輸入 284
6.4 將列表與函數一起使用 288
6.5 問題求解:修改算法 295
6.6 問題求解:通過操作實體對象發現算法 300
6.7 表格 304
6.7.1 創建表格 304
6.7.2 訪問元素 305
6.7.3 定位相鄰元素 305
6.7.4 計算行總計和列總計 306
6.7.5 將表格與函數一起使用 306
本章小結 314
複習題 315
編程題 318
第7章 文件和異常 325
7.1 讀取和寫入文本文件 325
7.1.1 打開文件 325
7.1.2 讀取文件 326
7.1.3 寫入文件 327
7.1.4 文件處理示例 327
7.2 文本輸入和輸出 328
7.2.1 遍歷文件中的行 329
7.2.2 讀取單詞 330
7.2.3 讀取字符 332
7.2.4 讀取記錄 333
7.3 命令行參數 340
7.4 二進制文件和隨機訪問(可選) 352
7.4.1 讀取和寫入二進制文件 352
7.4.2 隨機訪問 353
7.4.3 圖像文件 353
7.4.4 處理BMP文件 355
7.5 異常處理 361
7.5.1 引發異常 361
7.5.2 處理異常 362
7.5.3 finally子句 364
7.6 應用案例:處理輸入錯誤 367
本章小結 378
複習題 379
編程題 380
第8章 集合和字典 390
8.1 集合 390
8.1.1 創建和使用集合 390
8.1.2 添加和刪除元素 392
8.1.3 子集 393
8.1.4 並集、交集和差集 393
8.2 字典 400
8.2.1 創建字典 401
8.2.2 訪問字典的值 401
8.2.3 添加和修改數據項 401
8.2.4 刪除數據項 402
8.2.5 遍歷字典 403
8.3 複雜的數據結構 409
8.3.1 包含集合的字典 409
8.3.2 包含列表的字典 411
本章小結 420
複習題 421
編程題 423
第9章 對象和類 426
9.1 面向對象的程序設計 426
9.2 實現一個簡單的類 427
9.3 指定類的公共接口 430
9.4 設計數據表示 431
9.5 構造函數 432
9.6 實現方法 435
9.7 測試類 438
9.8 問題求解:跟蹤對象 445
9.9 問題求解:對象數據的模式 448
9.9.1 使用總計 448
9.9.2 統計事件 449
9.9.3 收集值 449
9.9.4 管理對象的屬性 449
9.9.5 使用不同的狀態建模對象 450
9.9.6 描述對象的位置 451
9.10 對象引用 451
9.10.1 共享引用 452
9.10.2 None引用 453
9.10.3 self引用 454
9.10.4 對象的生命週期 454
9.11 應用案例:實現一個Fraction類 456
9.11.1 Fraction類的設計 456
9.11.2 構造函數 457
9.11.3 特殊方法 458
9.11.4 算術運算 459
9.11.5 邏輯運算 460
本章小結 467
複習題 468
編程題 469
第10章 繼承 475
10.1 繼承的層次結構 475
10.2 實現子類 479
10.3 調用超類的構造函數 482
10.4 重寫方法 485
10.5 多態 488
10.6 應用案例:幾何圖形類的層次結構 500
10.6.1 基類 500
10.6.2 基本形狀 502
10.6.3 形狀組 505
本章小結 514
複習題 514
編程題 515
第11章 遞歸 520
11.1 三角形數字之再探討 520
11.2 問題求解:遞歸思維 523
11.3 遞歸輔助函數 527
11.4 遞歸的效率 528
11.5 排列 533
11.6 回溯 536
11.7 相互遞歸 543
本章小結 550
複習題 550
編程題 551
第12章 排序和查找 556
12.1 選擇排序算法 556
12.2 選擇排序算法的性能測量 558
12.3 選擇排序算法的性能分析 559
12.4 合併排序算法 563
12.5 分析合併排序算法 565
12.6 查找算法 569
12.6.1 線性查找 570
12.6.2 二分查找 571
12.7 問題求解:估計算法的運行時間 573
12.7.1 線性時間 573
12.7.2 二次時間 574
12.7.3 三角形模式 575
12.7.4 對數時間 576
本章小結 581
複習題 581
編程題 584
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

