本書介紹Python的基礎知識,旨在幫助學生首先掌握概念,之后通過步驟完備的實例培養學生的問題求解能力。這一版采用Python3,并對全書結構進行了優化,既可作為*門程序設計課的入門教材,也可供Python愛好者自學參考。
本書主要介紹Python編程要領與高效學習的方法,內容非常廣泛,適合作為計算機科學與技術以及其他學科領域學生的第一門程序設計課程教材。閱讀本書并不需要讀者擁有編程經驗,只需要掌握一些高中的代數知識就可以了。為了教學方便,本書采用Python 3,它在很多方面比Python 2更加有規律。
本書主要特色
首先介紹基本語法。
本書采用了傳統套路,首先強調程序控制結構、函數、過程分解和內置數據結構,在合適的章節中盡可能早地提到并使用了對象的概念,但是到了第9章才要求學生開始設計和實現自定義類。
適當的引導和可運行示例幫助學生順利成功。
程序員新手總是會問:“我該怎么開始?現在我該怎么辦?”當然,編寫程序這樣一件復雜的事情無法簡化為類似于食譜一樣的簡單指令。然而,一步一步的引導毫無疑問對于樹立信心和給出手頭任務的梗概是非常有幫助的。“問題解決”強調設計和計劃的重要性,“如何做”引導和幫助學生完成一些常見的編程任務,還有大量“編程實戰”演示了如何利用本章學到的概念去解決有趣的問題。
問題解決策略明確。
實用的、按步驟的技術圖解可以幫助學生設計和評估編程問題的解決方案,在非常相關和必要的時候介紹這些策略,可以幫助大多數學生掃除通往成功的障礙。這些策略包括:
算法設計(使用偽代碼)
首先手工完成(手工完成樣例的計算)
流程圖
測試用例
手工跟蹤
故事板
先解決一個簡單些的問題
可復用的函數
逐步提煉
修改算法
通過處理物理對象發現算法
跟蹤對象
對象數據的模式
遞歸思維
估算算法的運行時間
有效的練習使得一切更加完美。
專業學習編程的學生需要有能力實現一些了不起的程序,但他們首先需要相信自己可以成功。本書每節后面有大量的自測題,并通過“練習它”指針來表示。另外,還通過在線方式提供了更多的練習機會,包括自動升級的編程練習和技巧型的多選問題。
通過可視化的方式激發讀者并方便導航。
圖片以可視化的方式解釋了計算機概念的本質和行為,逐步展示的圖片可以更好地說明復雜的程序操作。語法框和示例表使用緊湊的格式提供了大量典型和特殊的情況,在關注文字材料之前通過瀏覽這些視覺資料可以很容易地了解大概情況。
技術上精確的同時關注要領。
像百科全書一樣地羅列所有內容對編程新手來說是沒有幫助的,同樣,僅僅給出一個非常簡化的要點列表也是沒有幫助的。本書以容易消化和理解的方式給出要領,例如一些可以深入練習達到更好效果的注解,或者當讀者已經準備好接收更多信息時給出的語言特性。
本版更新
擴充了圖形圖像處理知識。
為了加強對語言結構的理解,增加了圖形處理的使用。學生在第4章學習設計和使用循環時會開始接觸到圖像處理,第5章在創建圖像處理函數工具包時會再次接觸到這些內容。
工具箱模塊。
很多可選的“工具箱”介紹了豐富的Python庫生態中有用的包。借助這些包,學生可以完成很多實際的任務,例如統計、繪制圖表、發送郵件、處理電子表格、分析網頁。這些庫都是基于計算機科學理論背景的,學生通過這些庫可以學習如何應用這些理論來解決實際的問題,每個工具箱搭配了很多章末復習和編程練習。
數據繪圖。
一些新的可運行示例演示了如何通過圖形繪制來創建數據的可視化表示,這些示例使用pyplot庫創建簡單的圖形表示,演示如何運用相應章節學到的語言知識。
交互學習。
與本書集成的還有更多交互式的學習內容,使學生沉浸于可以促進深度學習的一些活動中。學生不僅可以觀看動畫和代碼跟蹤過程,而且可以自己動手來生成這些素材。這些活動可以提供即時反饋來反映學生哪里做得正確和哪里需要繼續學習。可以訪問http://wiley.
com/go/pfe2interactivities來獲取更多資源,以便在你自己的課程中使用。
“CodeCheck”是一個非常有新意的在線服務,學生可以用它來解決一些編程問題,你可以指定已經提前設計好的練習,也可以很容易地添加自己的題目,歡迎訪問http://codecheck.it了解更多內容并大膽嘗試。
本書概覽
圖1展示了各章節之間的依賴關系和內容組織方法,本書核心內容有:
第1章 概述
第2章 數字與字符串編程
第3章 選擇結構
第4章 循環
第5章 函數
第6章 列表
第7章 文件與異常
第8章 集合與字典
然后是與面向對象編程有關的兩章:
第9章 對象和類
第10章 繼承
最后兩章是深入學習算法設計與分析的課程:
第11章 遞歸
第12章 排序和搜索
圖1 章節依賴關系
圖形圖像處理。
編寫可以繪制圖形或者處理圖像的程序可以給學生提供復雜主題的有效、直觀的認識。第2章介紹了EzGraphics開源庫以及如何使用它創建基本的圖形。學生會發現這個庫比Python的標準庫Tkinter更容易使用,并且支持簡單的圖像處理。圖形案例和練習貫穿了整本書,但都屬于可選講的內容。
練習。
每章最后的練習包含了大量復習題和編程問題,有些是來自于圖形、科學和商業領域的可選問題。為了吸引學生,這些練習演示了在應用領域中編程的價值。
Web資源。
本書還補充了完整的系列在線資源,可登錄www.wiley.c
凱·霍斯特曼(Cay Horstmann) 圣何塞州立大學計算機科學系教授,Java的倡導者,經常在開發人員會議上發表演講。他是《Java核心技術》的作者,同時也關注Python、Scala、C++等語言,為專業程序員和計算機科學專業學生編寫過數十本圖書。
蘭斯·尼塞斯(Rance Necaise) 蘭道爾夫-麥肯學院計算機科學系副教授,撰寫了《Data Structures and Algorithms Using Python》和《Python for Java Programmers》等技術書籍。
出版者的話
譯者序
前言
第1章 概述 1
1.1 計算機程序 1
1.2 深入剖析計算機 2
1.3 Python編程語言 4
1.4 熟悉編程環境 5
1.5 分析第一個程序 9
1.6 錯誤 11
1.7 問題解決:算法設計 13
本章小結 18
復習題 19
編程練習 20
第2章 數字與字符串編程 23
2.1 變量 23
2.1.1 定義變量 23
2.1.2 數字類型 25
2.1.3 變量名 26
2.1.4 常量 27
2.1.5 注釋 27
2.2 算術運算 29
2.2.1 基本算術運算 29
2.2.2 冪運算 30
2.2.3 整除和余數 30
2.2.4 調用函數 31
2.2.5 數學函數 33
2.3 問題解決:首先手工完成 36
2.4 字符串 39
2.4.1 字符串類型 39
2.4.2 連接與重復 40
2.4.3 轉換數字和字符串 41
2.4.4 字符串與字符 41
2.4.5 字符串方法 42
2.5 輸入輸出 45
2.5.1 用戶輸入 45
2.5.2 輸入數字 46
2.5.3 格式化輸出 47
2.6 圖形:簡單繪圖 56
2.6.1 創建窗口 56
2.6.2 線和多邊形 57
2.6.3 內部填充的形狀與顏色 58
2.6.4 橢圓、圓和文本 60
本章小結 66
復習題 67
編程練習 69
第3章 選擇結構 78
3.1 if語句 78
3.2 關系運算符 82
3.3 嵌套的分支 90
3.4 多重選擇 94
3.5 問題解決:流程圖 99
3.6 問題解決:測試用例 102
3.7 布爾變量和運算符 104
3.8 分析字符串 109
3.9 應用:輸入驗證 112
本章小結 125
復習題 126
編程練習 131
第4章 循環 142
4.1 while循環 142
4.2 問題解決:手工跟蹤 148
4.3 應用:處理警戒值 151
4.4 問題解決:故事板 155
4.5 常見循環算法 158
4.5.1 數值求和與平均 158
4.5.2 匹配計數 158
4.5.3 遇到匹配項之前一直提示 159
4.5.4 最大值與最小值 159
4.5.5 比較相鄰值 159
4.6 for循環 161
4.7 嵌套循環 168
4.8 處理字符串 175
4.8.1 統計匹配項 175
4.8.2 查找所有匹配 176
4.8.3 查找第一個或最后一個匹配項 176
4.8.4 驗證字符串 176
4.8.5 構建新字符串 177
4.9 應用:隨機數和模擬 179
4.9.1 生成隨機數 179
4.9.2 模擬擲骰子 180
4.9.3 蒙特卡羅方法 180
4.10 圖形:數字圖像處理 184
4.10.1 圖像過濾 184
4.10.2 重構圖像 187
4.11 問題解決:先解決一個簡單些的問題 188
本章小結 194
復習題 195
編程練習 199
第5章 函數 212
5.1 函數如同黑盒子 212
5.2 實現和測試函數 213
5.2.1 實現函數 213
5.2.2 測試函數 214
5.2.3 包含函數的程序 215
5.3 參數傳遞 217
5.4 返回值 219
5.5 沒有返回值的函數 228
5.6 問題解決:可復用的函數 229
5.7 問題解決:逐步提煉 233
5.8 變量作用域 246
5.9 圖形:實現圖像處理工具包 252
5.9.1 準備開始 252
5.9.2 比較圖像 253
5.9.3 調整圖像亮度 253
5.9.4 旋轉圖像 255
5.9.5 使用工具包 256
5.10 遞歸函數(可選) 260
本章小結 264
復習題 265
編程練習 267
第6章 列表 276
6.1 列表基本屬性 276
6.1.1 創建列表 276
6.1.2 訪問列表元素 277
6.1.3 遍歷列表 278
6.1.4 列表引用 279
6.2 列表操作 282
6.2.1 追加元素 282
6.2.2 插入元素 282
6.2.3 查找元素 283
6.2.4 刪除元素 284
6.2.5 連接與重復 285
6.2.6 相等性測試 285
6.2.7 求和、最大值、最小值和排序 285
6.2.8 復制列表 285
6.3 常用列表算法 288
6.3.1 填充 288
6.3.2 合并列表元素 288
6.3.3 元素分隔符 289
6.3.4 最大值和最小值 289
6.3.5 線性搜索 290
6.3.6 收集和統計匹配項 290
6.3.7 刪除匹配項 291
6.3.8 交換元素 291
6.3.9 讀取輸入 292
6.4 在函數中使用列表 297
6.5 問題解決:修改算法 304
6.6 問題解決:通過處理物理對象發現算法 310
6.7 表格 314
6.7.1 創建表格 314
6.7.2 訪問元素 315
6.7.3 定位鄰居元素 315
6.7.4 計算行和列的總和 316
6.7.5 在函數中使用表格 316
本章小結 324
復習題 325
編程練習 328
第7章 文件與異常 337
7.1 讀取和寫入文本文件 337
7.1.1 打開文件 337
7.1.2 讀取文件 338
7.1.3 寫入文件 339
7.1.4 文件處理案例 339
7.2 文本輸入和輸出 341
7.2.1 迭代文件中的行 341
7.2.2 讀取單詞 342
7.2.3 讀取字符 344
7.2.4 讀取記錄 345
7.3 命令行參數 353
7.4 二進制文件與隨機訪問(可選) 365
7.4.1 讀寫二進制文件 365
7.4.2 隨機訪問 366
7.4.3 圖像文件 366
7.4.4 處理BMP文件 367
7.5 異常處理 373
7.5.1 拋出異常 374
7.5.2 處理異常 375
7.5.3 finally子句 376
7.6 應用:處理輸入錯誤 380
本章小結 391
復習題 392
編程練習 393
第8章 集合與字典 404
8.1 集合 404
8.1.1 創建和使用集合 404
8.1.2 增加和刪除元素 405
8.1.3 子集 406
8.1.4 并集、交集和差集 4