本書詳盡而系統(tǒng)地介紹了Python語言程序設計的方方面面,通過大量的示例、偽代碼、流程圖和其他工具,使讀者更容易學習程序設計邏輯。本書清晰、簡明、友好的表述風格,可以讓讀者輕松掌握Python編程理論,快速投入實際開發(fā)中。
本書詳盡而系統(tǒng)地介紹了Python語言程序設計的方方面面,通過大量的示例、偽代碼、流程圖和其他工具,使讀者更容易學習程序設計邏輯。本書清晰、簡明、友好的表述風格,可以讓讀者輕松掌握Python編程理論,快速投入到實際開發(fā)中。
本書特色
清晰、友好、易于理解的表達:簡明而有效的編程理論講解,循序而善誘。
豐富而簡明實用的樣例程序:包括突出特定編程主題的簡短示例, 以及更深入解決問題的程序。
每章提供一個或多個案例研究:提供一個具體問題的逐步分析, 并展示如何解決它。
第5版新增內容
增加了有關數(shù)據(jù)庫編程的新章節(jié)(第14章)。
解釋了列表解析、字典解析和集合解析。
增加了新的字符串知識,包括f字符串、字符串令牌、相鄰字符串的隱式連接,以及讀取和解析CSV文件的新示例。
增加了新的GUI編程知識,包括為控件添加邊框、內部和外部填充、列表框控件和滾動條等。
針對龜圖增加了用于讀取帶有對話框的用戶輸入的兩個命令。
引入了隨機選擇列表元素的相關函數(shù)。
增加了新函數(shù)知識,包括對pass關鍵字、None值的討論等。
本書面向編程零基礎的初學者,使用Python語言來講授編程概念和解決問題的方法。通過易于理解的示例、偽代碼、流程圖和其他工具,學生可以學習如何設計程序的邏輯,以及如何使用Python實現(xiàn)程序。本書是非常理想的編程入門課程的教材,也適合作為以Python為語言的編程邏輯與設計課程的教材。
本書的特點是其清晰、友好、易于理解的描述。此外,它有著豐富而簡明實用的示例程序,包括突出特定編程主題的簡短示例,以及解決更深入問題的程序。每章提供一個或多個案例研究,對具體問題進行逐步分析,并展示如何解決它。
先控制結構,然后類
Python是一種完全面向對象的編程語言,但是讀者不必在開始編程時就去理解面向對象的概念。本書首先介紹數(shù)據(jù)存儲、輸入和輸出、控制結構、函數(shù)、序列和列表、文件I/O以及從標準類庫中創(chuàng)建對象等基礎知識,然后介紹如何編寫類,探索繼承和多態(tài)性,并學習編寫遞歸函數(shù)。后介紹如何開發(fā)簡單的事件驅動的GUI應用程序。
第5版的變化
本書清晰的寫作風格和以前的版本一樣。然而,本版也做了許多補充和改進,總結如下:
數(shù)據(jù)庫編程增加了有關數(shù)據(jù)庫編程的新章節(jié)(第14章),介紹SQL和SQLite上的Python數(shù)據(jù)庫編程。
解析表達式解釋了列表解析、字典解析和集合解析。
更新的字符串知識添加了新的字符串知識,包括:
使用Python 3.6引入的f-string來顯示格式化輸出。f-string使用簡潔直觀的語法,比format函數(shù)更容易學習。format函數(shù)的材料已移至附錄F。
第8章增加了對字符串token的討論。
第8章添加了讀取和解析CSV文件的新示例。
擴展了第2章中對字符串連接的討論,包含了相鄰字符串的隱式連接。
GUI編程第13章添加了新的GUI編程知識,包括:
為控件添加邊框。
內部和外部填充。
列表框控件和滾動條。
龜圖引入了用于讀取帶有對話框的用戶輸入的兩個命令:
turtle.numinput。
turtle.textinput。
隨機選擇列表元素在第7章引入了random.choice()函數(shù),用于隨機選擇列表元素。
新函數(shù)知識第5章添加了一些新知識,包括:
引入了pass關鍵字。
擴展了對None值的討論,解釋了為什么函數(shù)可能返回None。
采用了有條件執(zhí)行main函數(shù)的標準做法。
各章概覽
第1章:計算機與編程
本章首先對計算機的工作方式、數(shù)據(jù)的存儲和操作方式以及使用高級語言編寫程序的原因進行非常具體且易于理解的解釋。本章還介紹了Python、交互模式、腳本模式和IDLE。
第2章:輸入、處理與輸出
本章介紹程序的開發(fā)周期、變量、數(shù)據(jù)類型和使用順序結構編寫的簡單程序。學生可以學習如何編寫簡單的程序:從鍵盤讀取輸入、執(zhí)行數(shù)學運算并輸出到屏幕上。本章還對偽碼和流程圖等設計程序的工具進行了介紹。本章后介紹了機器龜圖形庫。
第3章:選擇結構與布爾邏輯
本章介紹關系運算符和布爾表達式,并展示如何使用選擇結構控制程序流程,涉及if、if-else和if-elif-else語句,還討論了嵌套選擇結構和邏輯運算符。本章后討論了如何使用選擇結構測試機器龜?shù)臓顟B(tài)。
第4章:循環(huán)結構
本章展示如何使用while循環(huán)和for循環(huán)創(chuàng)建循環(huán)結構,討論了計數(shù)器、累加器和標記,以及編寫輸入驗證循環(huán)的技術。本章后介紹了如何使用循環(huán)和機器龜圖形庫進行繪圖設計。
第5章:函數(shù)
本章首先介紹如何編寫和調用void函數(shù),展示了使用函數(shù)對程序進行模塊化的好處,并討論了自頂向下的設計方法。然后,介紹如何將參數(shù)傳遞給函數(shù),討論了常見的庫函數(shù),如生成隨機數(shù)的函數(shù)。在學習了如何調用庫函數(shù)并使用其返回值之后,講解如何定義和調用自己的函數(shù)。接下來介紹如何使用模塊來組織函數(shù)。本章后討論了如何使用函數(shù)模塊化機器龜圖形庫代碼。
第6章:文件和異常
本章介紹順序文件的輸入和輸出,學習如何讀取和寫入大量數(shù)據(jù),并將數(shù)據(jù)存儲為字段和記錄。本章后討論異常,并演示了如何編寫異常處理的代碼。
第7章:列表和元組
本章介紹Python中序列的概念,探討兩種常見Python序列列表和元組的使用,學習使用列表進行類似數(shù)組的操作,例如在列表中存儲對象、遍歷列表、搜索列表中的元素以及計算列表中元素的總和和平均值。本章討論了列表解析表達式、切片和許多列表方法,涉及一維和二維列表。本章還包括對matplotlib包的討論,以及如何使用它根據(jù)列表繪制圖表。
第8章:深入字符串
本章介紹如何更加細致地處理字符串,討論遍歷字符串中各個字符的字符串切片和算法,并介紹用于字符、文本處理的內置函數(shù)和字符串方法。本章還包括token化字符串和解析CSV文件的示例。
第9章:字典和集合
本章介紹字典和集合數(shù)據(jù)結構,學習將數(shù)據(jù)存儲為字典中的鍵值對、檢索值、更改現(xiàn)有值、添加新鍵值對、刪除鍵值對以及編寫字典解析。接下來討論如何將值存儲為集合中的元素,并執(zhí)行常見的集合操作,例如并集、交集、差集和對稱差集,還討論了集合解析。后對對象序列化進行了討論,并介紹了Python pickle模塊。
第10章:類與面向對象編程
本章比較面向過程和面向對象的編程實踐,涵蓋了類和對象的基本概念,并討論了屬性、方法、封裝和數(shù)據(jù)隱藏、_?_init_?_函數(shù)(類似于構造函數(shù))、訪問器、賦值器,學習如何使用UML對類進行建模,以及如何在特定問題中查找類。
第11章:繼承
本章繼續(xù)學習繼承和多態(tài),所涉及的主題包括超類、子類以及_?_init_?_函數(shù)在繼承、方法覆蓋和多態(tài)中的工作方式。
第12章:遞歸
本章討論遞歸及其在問題求解中的應用,給出了遞歸調用的可視化跟蹤和遞歸應用,展示了許多任務的遞歸算法,例如查找因子、求公約數(shù)、對列表中的一系列值求和,并給出了經(jīng)典漢諾塔的例子。
第13章:GUI編程
本章討論使用Python的tkinter模塊設計GUI應用程序的基本方法,包括標簽、按鈕、輸入域、單選按鈕、復選框、列表框和對話框等基本控件,還學習了GUI應用程序中事件的工作方式以及如何編寫回調函數(shù)來處理事件。本章包括對Canvas控件的討論,以及如何使用它來繪制直線、矩形、橢圓、弧、多邊形和文本。
第14章:數(shù)據(jù)庫編程
本章介紹數(shù)據(jù)庫編程。首先介紹數(shù)據(jù)庫的基本概念,如表、行、主鍵等。然后學習使用SQLite在Python中連接數(shù)據(jù)庫。接下來介紹SQL以及如何執(zhí)行查詢和語句來搜索行、添加新行、更新現(xiàn)有行和刪除行。后演示CRUD應用程序,討論了關系數(shù)據(jù)。
附錄A:Python安裝
本附錄解釋如何下載和安裝Python版。
附錄B:IDLE簡介
本附錄概述Python附帶的IDLE集成開發(fā)環(huán)境。
附錄C:ASCII字符集
作為參考,本附錄列出了ASCII字符集。
附錄D:預定義顏色
本附錄列出了可與機器龜圖形庫、matplotlib和tkinter一起使用的預定義顏色名稱。
附錄E:import語句詳解
本附錄討論使用import語句的各種方法。例如,可以使用import語句導入模塊、類、函數(shù)或為模塊分配別名。
附錄F:使用format()函數(shù)格式化數(shù)值輸出
本附錄討論format()函數(shù),展示了如何使用其格式說明符來控制數(shù)值的顯示方式。
附錄G:使用pip工具安裝模塊
本附錄討論如何使用pip實用工具從Python包索引(PyPI)安裝第三方模塊。
附錄H:檢查點參考答案
本附錄給出了正文中出現(xiàn)的檢查點問題的答案。
本書的組織
本書以循序漸進的方式講授編程。每一章都包含一組主題,既可以很容易地按照現(xiàn)在的章節(jié)順序進行講授,也可以有一定的靈活性,從而按照希望的順序進行教學安排。圖P-1顯示了章節(jié)之間的依賴關系,箭頭指明講授某章節(jié)之前必須覆蓋的章節(jié)。
圖P-1 章節(jié)依賴關系
本書特點
概念 每個主要節(jié)都從概念開始。
示例程序 每章都有大量完整和部分的示例程序,旨在突出當前主題。
聚光燈 每章都有一個或多個聚光燈案例研究,提供詳細的、循序漸進的問題分析,并展示如何解決它們。
注 貫穿全書,對有趣的或經(jīng)常被誤解的上下文相關的主題進行簡短的解釋。
提示 提供解決不同編程問題的技術。
警告 提醒學生注意可能導致程序出現(xiàn)錯誤或數(shù)據(jù)丟失的編程技術或實踐。
檢查點 貫穿全書,在學習新主題后快速檢查學生的掌握情況。
復習題 位于每章末,包括多項選擇題、判斷題、算法工作室、簡答題和編程題。
補充材料
學生在線資源
以下資源可在www.pearsonhighered.com/cs-resources上找到:
每個示例程序的源代碼
本書的配套視頻注釋
教師資源
所有復習題的答案
PPT
測試題庫
掃描二維碼可獲得的中文材料
本書采用一書一碼的方式,即一本書對應一個專有的二維碼(見本書前面的襯紙)。掃描二維碼獲取閱讀權限后,可瀏覽以下電子數(shù)據(jù)資源。
第11章 繼承
第12章 遞歸
第13章 GUI編程
第14章 數(shù)據(jù)庫編程
附錄A Python安裝
附錄B IDLE簡介
附錄C ASCII字符集
附錄D 預定義顏色
附錄E import語句詳解
附錄F 使用format()函數(shù)格式化數(shù)值輸出
附錄G 使用pip工具安裝模塊
附錄H 檢查點參考答案
未來我們還可能通過該二維碼提供更多的增值服務,例如習題答案、教師的授課視頻等。
致謝
感謝下列評審人員的專業(yè)建議:
感謝海伍德社區(qū)學院的教職員工和管理人員,感謝他們讓我有機會教授我所熱愛的學科。還要感謝家人和朋友對我所有項目的支持。
本書能被培生出版是我莫大的榮幸,非常幸運有Tracy Johnson作為我的編輯和內容經(jīng)理。她和她的同事Holly Stark、Erin Sullivan、Alicia Wilson、Scott Disanno、Carole Snyder、Bob Engelhardt、Aishwarya Panday不知疲倦地制作和推廣這本書。謝謝大家!
托尼加迪斯(Tony Gaddis)在北卡羅來納州的海伍德社區(qū)學院講授計算機編程語言操作系統(tǒng)和物理課程。他在1994年被評為北卡羅來納社區(qū)學院的年度教師,并在1997年獲得教學卓越獎。Tony也提供對公司和機構(包括NASA的肯尼迪航天中心)的培訓。他著有《Starting Out with C 》和《Starting Out with Java》,并與人合著了《Starting Out with Visual Basic 2005》等。
譯者序
前言
第1章 計算機與編程 1
1.1 簡介 1
1.2 硬件和軟件 2
1.2.1 硬件 2
1.2.2 軟件 4
1.3 計算機如何存儲數(shù)據(jù) 5
1.3.1 存儲數(shù)字 6
1.3.2 存儲字符 7
1.3.3 高級數(shù)字存儲 8
1.3.4 其他類型的數(shù)據(jù) 8
1.4 程序如何工作 9
1.4.1 從機器語言到匯編語言 11
1.4.2 高級語言 11
1.4.3 關鍵字、操作符和語法概述 12
1.4.4 編譯器和解釋器 13
1.5 使用Python 14
1.5.1 安裝Python 14
1.5.2 Python解釋器 14
1.5.3 交互模式 15
1.5.4 在腳本模式下編寫和運行Python程序 16
1.5.5 IDLE編程環(huán)境 16
復習題 17
第2章 輸入、處理與輸出 20
2.1 設計一個程序 20
2.1.1 程序開發(fā)周期 20
2.1.2 設計過程中的更多技術細節(jié) 21
2.1.3 理解程序要完成的任務 21
2.1.4 確定為完成任務所需采取的步驟 21
2.1.5 偽碼 22
2.1.6 流程圖 22
2.2 輸入、處理與輸出 23
2.3 用print函數(shù)顯示輸出 24
2.4 注釋 26
2.5 變量 27
2.5.1 用賦值語句創(chuàng)建變量 27
2.5.2 變量命名規(guī)則 29
2.5.3 用print函數(shù)顯示多項內容 30
2.5.4 變量再賦值 31
2.5.5 數(shù)值數(shù)據(jù)類型和數(shù)值文本 31
2.5.6 用數(shù)據(jù)類型str來存儲字符串 33
2.5.7 將一個變量重新賦值為不同的類型 33
2.6 從鍵盤讀取輸入 34
2.7 執(zhí)行計算 37
2.7.1 浮點數(shù)除法與整數(shù)除法 40
2.7.2 運算符的優(yōu)先級 40
2.7.3 用圓括號將運算分組 41
2.7.4 指數(shù)運算符 43
2.7.5 求余運算符 43
2.7.6 將數(shù)學公式轉換成程序語句 44
2.7.7 混合數(shù)據(jù)類型的表達式與數(shù)據(jù)類型轉換 46
2.7.8 長語句拆分成多行 47
2.8 字符串連接 48
2.9 關于print函數(shù)的更多介紹 49
2.9.1 抑制print函數(shù)的換行功能 49
2.9.2 指定一個輸出項分隔符 50
2.9.3 轉義字符 50
2.10 用f-string顯示格式化輸出 52
2.10.1 占位符表達式 52
2.10.2 格式化數(shù)值 53
2.10.3 舍入浮點數(shù) 53
2.10.4 插入逗號分隔符 54
2.10.5 格式化浮點數(shù)為百分數(shù)形式 55
2.10.6 科學記數(shù)法形式的格式化 55
2.10.7 格式化整數(shù) 55
2.10.8 指定小域寬 56
2.10.9 數(shù)值對齊 57
2.10.10 指示符的順序 58
2.10.11 用f-string連接 58
2.11 有名常量 60
2.12 機器龜圖形庫簡介 61
2.12.1 使用機器龜來畫線 62
2.12.2 機器龜?shù)霓D向 62
2.12.3 將機器龜?shù)某蛟O置為特定的角度 63
2.12.4 獲取機器龜?shù)漠斍俺?64
2.12.5 畫筆的抬起和放下 64
2.12.6 繪制圓和點 65
2.12.7 修改畫筆的寬度 66
2.12.8 改變畫筆的顏色 66
2.12.9 修改背景的顏色 66
2.12.10 重新設置屏幕 66
2.12.11 指定圖形窗口的大小 67
2.12.12 移動機器龜?shù)街付ǖ奈恢?67
2.12.13 獲取機器龜?shù)漠斍拔恢?68
2.12.14 控制機器龜?shù)膭赢嬎俣?68
2.12.15 隱藏機器龜 68
2.12.16 在圖形窗口中顯示文本 69
2.12.17 圖形填充 69
2.12.18 用對話框獲取輸入 71
2.12.19 用turtle.textinput命令獲取字符串輸入 72
2.12.20 用turtle.done()語句保持圖形窗口的開放狀態(tài) 73
復習題 79
第3章 選擇結構與布爾邏輯 85
3.1 if語句 85
3.1.1 布爾表達式與關系運算符 86
3.1.2 綜合應用 88
3.2 if-else語句 91
3.3 字符串比較 94
3.4 嵌套的選擇結構與if-elif-else語句 97
3.4.1 測試一組條件 100
3.4.2 if-elif-else語句 102
3.5 邏輯運算符 103
3.5.1 運算符and 104
3.5.2 運算符or 105
3.5.3 短路求值 105
3.5.4 運算符not 105
3.5.5 再次分析判定貸款資格的程序 106
3.5.6 另一個判定貸款資格的程序 107
3.5.7 用邏輯運算符檢查數(shù)據(jù)范圍 108
3.6 布爾變量 109
3.7 機器龜圖形庫:判斷機器龜?shù)臓顟B(tài) 110
3.7.1 獲取機器龜?shù)奈恢?110
3.7.2 獲取機器龜?shù)某?110
3.7.3 檢測畫筆是否被放下 110
3.7.4 判斷機器龜是否可見 111
3.7.5 獲取當前顏色 111
3.7.6 獲取畫筆的線寬 112
3.7.7 獲取機器龜?shù)膭赢嬎俣?112
復習題 117
第4章 循環(huán)結構 124
4.1 循環(huán)結構簡介 124
4.2 while循環(huán):條件控制的循環(huán) 125
4.2.1 while循環(huán)是先測試的循環(huán) 127
4.2.2 無限循環(huán) 129
4.3 for循環(huán):計數(shù)控制的循環(huán) 130
4.3.1 在for循環(huán)中使用range函數(shù) 132
4.3.2 在循環(huán)內部使用目標變量 133
4.3.3 讓用戶控制循環(huán)迭代 136
4.3.4 生成一個從大到小遞減的數(shù)據(jù)序列 138
4.4 計算累加和 138
4.5 標記 141