Python 程序設計基礎 (原書第4版)

托尼·加迪斯 (Tony Gaddis)

買這商品的人也買了...

商品描述

本書旨在教會讀者如何使用Python語言進行程序設計以及解決問題。書中配有大量淺顯易懂的實例、偽代碼、流程圖,各章還附有學習案例,旨在通過逐步解析的方式幫助讀者掌握解決問題的方法。
本書從電腦的工作原理、數據的存與備份等基礎知識引入,先對Python語言的交互模式、腳本模式以及IDLE環境進行概述,然後依次介紹Python的決策結構和布爾邏輯、文件和異常、列表和元組、類和麵向對象編程等知識,*後還介紹了事件驅動的GUI編程。

作者簡介

托尼·加迪斯(Tony Gaddis)海伍德社區學院高級講師,曾被評為北卡羅來納州社區學院"年度教師",並獲得了國家工作人員和組織發展研究所的教學卓越獎。Tony也提供對公司和機構(包括NASA的肯尼迪航天中心)的培訓。他著有《Starting Out with C++》和《Starting Out with Java》,並與人合著了《Starting Out with Visual Basic 2005》等。


譯者介紹
蘇小紅,哈爾濱工業大學計算機學院教授,本校計算機語言基礎教研室主任、智能軟件技術研究中心主任。研究方向為智能軟件工程、缺陷報告自動分派與開發者推薦、軟件缺陷檢測與漏洞挖掘等。

葉麟,哈爾濱工業大學計算機科學與技術學院講師。研究方向是信息安全、網絡安全、計算機網絡。

袁永峰,哈爾濱工業大學計算機學院副教授,曾承擔或參與國家自然科學基金7項,參與重點項目2項。研究方向為生物系統建模、計算機視覺、數據可視化。

目錄大綱

出版者的話
譯者序
前言
第1章計算機與編程1 
1.1簡介1 
1.2硬件和軟件2 
1.2.1硬件2 
1.2.2軟件4 
1.3計算機如何存儲數據5 
1.3.1存儲數字6 
1.3.2存儲字符7 
1.3.3高級數字存儲8 
1.3.4其他類型的數據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編程環境16 
複習題17 
第2章輸入、處理與輸出20 
2.1設計一個程序20 
2.1.1程序開發週期20 
2.1.2設計過程中的更多技術細節21 
2.1.3理解程序將要完成的任務21 
2.1.4決定為完成任務所需採取的步驟21 
2.1.5偽碼22
2.1.6流程圖22 
2.2輸入、處理與輸出23 
2.3用print函數顯示輸出24 
2.4註釋26 
2.5變量27 
2.5.1用賦值語句創建變量27 
2.5.2變量命名規則29 
2.5.3用print函數顯示多項內容30 
2.5.4變量再賦值30 
2.5.5數值數據類型和數值文本31 
2.5.6用數據類型str來存儲字符串32 
2.6從鍵盤讀取輸入34 
2.7執行計算37 
2.7.1浮點數除法與整數除法39 
2.7.2運算符的優先級39 
2.7.3用圓括號將運算分組40 
2.7.4指數運算符42 
2.7.5求餘運算符42 
2.7.6將數學公式轉換成程序語句43 
2.7. 7混合數據類型的表達式與數據類型轉換45 
2.7.8長語句拆分46 
2.8關於數據輸出的更多介紹47 
2.8.1抑制print函數的換行功能47 
2.8.2指定一個輸出項分隔符47 
2.8 .3轉義字符48 
2.8.4用運算符+來顯示多個輸出項49 
2.8.5數據格式化49 
2.8.6科學記數法形式的格式化50
2.8.7插入逗號分隔符51 
2.8.8指定最小域寬51 
2.8.9格式化浮點數為百分數形式52 
2.8.10格式化整數52 
2.9有名常量53 
2.10機器龜圖形庫簡介54 
2.10.1使用機器龜來畫線55 
2.10.2機器龜的轉向55 
2.10.3將機器龜的朝向設置為特定的角度57 
2.10.4獲取機器龜的當前朝向57 
2.10.5畫筆的抬起和放下57 
2.10.6繪製圓和點58 
2.10.7修改畫筆的寬度59 
2.10.8改變畫筆的顏色59 
2.10.9修改背景的顏色59 
2.10.10重新設置屏幕59 
2.10.11指定圖形窗口的大小59 
2.10.12移動機器龜到指定的位置60 
2.10.13獲取機器龜的當前位置60 
2.10.14控制機器龜的動畫速度61 
2.10.15隱藏機器龜61 
2.10.16在圖形窗口中顯示文本61 
2.10.17圖形填充62 
2.10 .18用命令turtle.done()來保持圖形窗口的開放狀態63 
複習題70 
第3章選擇結構與布爾邏輯76 
3.1 if語句76
3.1.1布爾表達式與關係運算符77 
3.1.2綜合應用79 
3.2 if-else語句82 
3.3字符串比較84 
3.4嵌套的選擇結構與if-elif-else語句88 
3.4.1測試一組條件91 
3.4.2 if-elif-else語句93 
3.5邏輯運算符94 
3.5.1運算符and 95 
3.5.2運算符or 95 
3.5.3短路定值96 
3.5.4運算符not 96 
3.5.5再次分析判定貸款資格的程序96 
3.5.6又一個判定貸款資格的程序97 
3.5.7用邏輯運算符檢查數據范圍98 
3.6布爾變量99 
3.7機器龜圖形庫:判斷機器龜的狀態100 
3.7.1獲取機器龜的位置100 
3.7.2獲取機器龜的朝向100 
3.7.3檢測畫筆是否被放下101 
3.7.4判斷機器龜是否可見101 
3.7.5獲取當前顏色101 
3.7.6獲取畫筆的線寬102 
3.7.7獲取機器龜的畫線速度102 
複習題107 
第4章循環結構114 
4.1循環結構簡介114 
4.2 while循環:條件控制的循環115
4.2.1 while循環是先測試的循環117 
4.2.2無限循環119 
4.3 for循環:計數控制的循環120 
4.3.1在for循環中使用range函數122 
4.3.2在循環內部使用目標變量123 
4.3.3讓用戶控制循環迭代126 
4.3.4生成一個取值範圍從高到低的迭代序列127 
4.4計算累加和128 
4.5標記131 
4.6驗證輸入的循環133 
4.7嵌套循環137 
4.8機器龜圖形庫:用循環語句進行繪圖設計142 
複習題145 
第5章函數150 
5.1函數簡介150 
5.1.1使用函數模塊化程序的好處150 
5.1.2 void函數和有返回值函數151 
5.2定義和調用void函數152 
5.2.1函數名152 
5.2.2定義和調用函數152 
5.2.3 Python的縮進155 
5.3使用函數設計程序156 
5.3.1使用函數流程圖化程序156 
5.3.2自頂向下的設計157 
5.3.3層次圖157 
5.3 .4暫停執行直到用戶按
Enter鍵160 
5.4局部變量160
5.5向函數傳遞參數162 
5.5.1參數變量的作用域164 
5.5.2傳遞多個參數165 
5.5.3改變參數166 
5.5.4關鍵字參數168 
5.6全局變量和全局常量169 
5.7有返回值的函數簡介:生成隨機數172 
5.7.1標準庫函數和import語句173 
5.7.2產生隨機數173 
5.7.3交互模式下的隨機數實驗176 
5.7.4 randrange、random和uniform函數179 
5.7.5隨機數種子179 
5.8自己編寫有返回值的函數181 
5.8.1充分利用return語句182 
5.8.2如何使用有返回值的函數182 
5.8.3使用IPO圖184 
5.8.4返回字符串187 
5.8.5返回布爾值188 
5.8 .6返回多個值189 
5.9 math模塊190 
5.10在模塊中存儲函數192 
5.11機器龜圖形庫:使用函數模塊化代碼195 
複習題200 
第6章文件和異常208 
6.1文件輸入和輸出簡介208 
6.1.1文件類型209 
6.1.2文件訪問方法210 
6.1.3文件名和文件對象210
6.1.4打開文件211 
6.1.5指定文件的位置211 
6.1.6將數據寫入文件212 
6.1.7從文件讀取數據213 
6.1.8將換行符連接到字符串215 
6.1.9讀取字符串並刪除其中的換行符216 
6.1.10將數據追加到已有文件217 
6.1.11讀寫數值數據218 
6.2使用循環處理文件221 
6.2.1使用循環讀取文件並檢查文件的結尾221 
6.2.2使用Python的for循環讀取多行223 
6.3處理記錄227 
6.4異常237 
6.4.1處理多個異常242 
6.4.2使用except語句捕獲所有異常243 
6.4.3顯示異常的默認錯誤信息244 
6.4.4 else語句245 
…… 
6.4.6如果異常沒有被處理怎麼辦247 
複習題247 
第7章列表和元組251 
7.1序列251 
7.2列表簡介251 
7.2.1重複運算符252 
7.2.2使用for循環在列表上迭代253 
7.2 .3索引253 
7.2.4 len函數254 
7.2.5列表是可變的254 
7.2.6連接列表256
7.3列表切片257 
7.4使用in操作符在列表中查找元素259 
7.5列表方法和有用的內置函數261 
7.5.1 del語句265 
7.5.2 min和max函數265 
7.6複製列表266 
7.7處理列表267 
7.7.1計算列表中的數值之和269 
7.7.2計算列表中數值的平均值269 
7.7.3將列表作為參數傳遞給函數270 
7.7.4從函數返回一個列表271 
7.7.5處理列表和文件274 
7.8二維列表277 
7.9元組280 
7.9.1重點是什麼281 
7.9.2列表和元組間的轉換282 
7.10使用matplotlib包畫出列表數據282 
7.10.1導入pyplot模塊283 
7.10.2繪製折線圖283 
7.10.3繪製條形圖290 
7.10.4繪製餅圖293 
複習題296 
第8章深入字符串302 
8.1字符串的基本操作302 
8.1.1訪問字符串中的單個字符302 
8.1.2字符串連接305 
8.1.3字符串是不可變的306 
8.2字符串切片307
8.3測試、搜索和操作字符串311 
8.3.1使用in和not in測試字符串311 
8.3.2字符串方法311 
8.3.3重複操作符318 
8.3.4分割字符串319 
複習題321 
第9章字典和集合326 
9.1字典326 
9.1.1創建字典326 
9.1.2從字典中檢索值327 
9.1.3使用in和not操作符測試字典中的值327 
9.1.4向已有字典中添加元素328 
9.1.5刪除元素329 
9.1.6獲取字典中元素的數量329 
9.1.7字典中數據類型的混合330 
9.1.8創建空字典331 
9.1.9使用for循環遍歷字典331 
9.1.10常用字典方法332 
9.2集合344 
9.2. 1創建集合345 
9.2.2獲取集合中元素的數量345 
9.2.3添加和刪除元素346 
9.2.4使用for循環在集合上迭代347 
9.2.5使用in和not in操作符判斷集合中的值348 
9.2 .6求集合的並集348 
9.2.7求集合的交集349 
9.2.8求兩個集合的差集349 
9.2.9求集合的對稱差集350
9.2.10求子集和超集350 
9.3序列化對象354 
複習題359 
第10章類與面向對象編程365 
10.1面向過程和麵向對象程序設計365 
10.1.1對象可重用性366 
10.1.2一個常見的對象例子366 
10.2類367 
10.2.1類定義368 
10.2.2隱藏屬性373 
10.2.3在模塊中存儲類375 
10.2.4 BankAccount類376 
…… 
10.3使用實例381 
10.3.1 Accessor和Mutator方法385 
10.3.2傳遞對像作為參數388 
10.4設計類的技巧400 
10.4.1統一建模語言400 
10.4.2使用類解決問題400 
10.4.3確定一個類的任務405 
10.4.4這僅僅是開始408 
複習題408 
第11章繼承413 
11.1繼承簡介413 
11.1.1泛化和特殊化413 
11.1.2繼承和is a關係413 
11.1.3 UML圖中的繼承420 
11.2多態424 
複習題430 
第12章遞歸432
12.1遞歸簡介432 
12.2遞歸求解問題434 
12.2.1使用遞歸計算階乘434 
12.2.2直接遞歸和間接遞歸436 
12.3遞歸算法示例437 
12.3.1遞歸求解列表中元素的和437 
12.3.2斐波那契數列438 
12.3.3求最大公約數439 
12.3.4漢諾塔440 
12.3.5遞歸與循環443 
複習題443 
第13章GUI編程446 
13.1 GUI 446 
13.2 tkinter模塊447 
13.3 Labe