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