Python程序設計:原書第3版 Python For Everyone 3rd Edition

Horstmann, Cay S., Necaise, Rance D.

商品描述

本書由經典暢銷書籍《Java核心技術》的作者Cay Horstmann撰寫,非常適合Python初學者和愛好者閱讀。全書採用模塊方式呈現知識要點,而非百科全書式的語法大全,不僅能夠幫助新手快速入門,掌握基礎知識,更有益於培養解決實際問題的思維和能力。
這一版新增了面向數據科學的程序示例和練習,不僅僅局限於電腦科學專業的程序設計教學;擴展了有關字符串和列表的簡便操作方法,以滿足讀者新的學習需求;引入了海龜圖形和游戲編程等數據包,借助豐富的Python庫幫助讀者完成不同領域的工作任務。
本書特色
首先介紹控制結構和函數等基本語法知識,以此為基礎,再講解設計和實現自定義類。
將解決方案分解為詳盡的步驟,循序漸進地引導讀者利用學到的概念解決有趣的問題。
從算法設計到流程圖、測試用例、逐步求精、估算運行時間等,提供明確的求解策略。
每章都包含大量的復習題和編程題,通過動手實踐有效幫助讀者鞏固知識並提升能力。
涵蓋圖形和圖像處理,通過示例來演示數據的可視化表示,使復雜主題變得易於理解。
“工具箱”模塊介紹了Python庫中很多實用的數據包,可用於解決跨學科的應用問題。
配有豐富的教輔資源,源代碼均可免費下載,方便讀者結合書中內容自主學習和進階。

作者簡介

[美]凱·霍斯特曼(Cay Horstmann)蘭斯·尼塞斯(Rance Necaise)著:凱·霍斯特曼(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 問題求解:算法設計 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