Python 編程初學者指南 Python编程初学者指南

[美]Michael Dawson

  • 出版商: 人民郵電
  • 出版日期: 2014-10-01
  • 定價: $354
  • 售價: 8.5$301
  • 語言: 簡體中文
  • 頁數: 392
  • 裝訂: 平裝
  • ISBN: 7115361444
  • ISBN-13: 9787115361448
  • 下單後立即進貨 (約4週~6週)

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

商品描述

<內容簡介>

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python可以用於很多的領域,從科學計算到遊戲開發。

《Python編程初學者指南》嘗試以輕鬆有趣的方式來幫助初學者掌握Python語言和編程技能。全書共12章,每一章都會用一個完整的遊戲來演示其中的關鍵知識點,並通過編寫好玩的小軟件這種方式來學習編程,引發讀者的興趣,降低學習的難度。每章最後都會對該章的知識點進行小結,還會給出一些小練習讓讀者試試身手。作者很巧妙的將所有編程知識嵌入到了這些例子中,真正做到了寓教於樂。

《Python編程初學者指南》內容淺顯易懂,示例輕鬆活潑,是國際暢銷的Python初學者教程,適合對Python感興趣的初級和中級讀者學習參考。

<章節目錄>

第1章啟程:Game Over程序1
1.1剖析Game Over程序1
1.2 Python簡介2
1.2.1 Python易於使用3
1.2.2 Python功能強大3
1.2.3 Python是面向對象的3
1.2.4 Python是一種“膠水”語言4
1.2.5 Python無所不在4
1.2.6 Python有一個強大的社區4
1.2.7 Python是免費的、開源的4
1.3在Windows上設置Python 4
1.4在其他操作系統上設置Python 5
1.5 IDLE簡介6
1.5.1通過交互模式進行編程6
1.5.2通過腳本模式進行編程9
1.6回到Game Over程序11
1.6.1使用註釋12
1.6.2使用空行13
1.6.3打印字符串13
1.6.4等待用戶13
1.7小結14

第2章類型、變量以及簡單I/O:Useless Trivia程序15
2.1 Useless Trivia程序簡介15
2.2使用引號和字符串16
2.2.1 Game Over 2.0程序簡介16
2.2.2在字符串內部使用引號17
2.2.3打印輸出多個值18
2.2.4為print指定結束字符串19
2.2.5創建三重引號字符串19
2.3使用轉義序列和字符串20
2.3.1 Fancy Credits程序簡介20
2.3 .2前進一個製表符位21
2.3.3打印反斜杠22
2.3.4插入換行符22
2.3.5插入引號22
2.3.6觸發系統蜂鳴器23
2.4字符串的連接和重複23
2.4.1 Silly Strings程序簡介24
2.4.2字符串的連接25
2.4.3使用行繼續符25
2.4.4字符串的重複25
2.5使用數字26
2.5.1 Word Problems程序簡介26
2.5.2理解數值類型27
2.5. 3使用數學運算符27
2.6理解變量28
2.6.1 Greeter程序簡介29
2.6.2創建變量29
2.6.3使用變量30
2.6.4變量命名30
2.7獲取輸入31
2.7.1 Personal Greeter程序簡介31
2.7.2使用input()函數32
2.8使用字符串方法33
2.8.1 Quotation Manipulation程序簡介34
2.8.2通過字符串方法創建新字符串35
2.9使用正確的類型37
2.9.1 Trust Fund Buddy-Bad程序簡介37
2.9 .2跟蹤邏輯錯誤38
2.10轉換值的類型39
2.10.1 Trust Fund Buddy-Good程序簡介39
2.10.2將字符串轉換成整數40
2.10.3使用複合賦值運算符41
2.11回到Useless Trivia程序42
2.11 .1創建初始註釋42
2.11.2獲取用戶輸入43
2.11.3打印小寫和大寫形式的name 43
2.11.4打印name五次43
2.11.5計算秒數44
2.11.6計算moon_weight和sun_weight 44
2.11.7等一等用戶44
2.12小結44

第3章條件分支、while循環以及程序策劃:Guess My Number遊戲46
3.1 Guess My Number遊戲簡介46
3.2生成隨機數47
3.2.1 Craps Roller程序簡介47
3.2.2引入random模塊48
3.2.3使用randint()函數49
3.2.4使用randrange()函數49
3.3使用if語句49
3.3.1 Password程序簡介50
3.3.2觀察if語句51
3.3.3創建條件51
3.3.4理解比較運算符52
3.3.5通過縮進創建代碼塊53
3.3.6構建自己的if語句53
3.4使用else子句53
3.4.1 Granted or Denied程序簡介54
3.4.2觀察else子句55
3.5使用elif子句55
3.5.1 Mood Computer程序簡介56
3.5.2觀察elif子句58
3.6創建while循環59
3.6.1 Three-Year-Old Simulator程序簡介60
3.6.2觀察while循環60
3.6.3初始化哨兵變量61
3.6. 4檢查哨兵變量61
3.6.5更新哨兵變量62
3.7避免無限循環62
3.7.1 Losing Battle程序簡介62
3.7.2跟蹤程序64
3.7.3創建可以變成False的條件64
3.8將值用作條件65
3.8 .1 Maitre D'程序簡介66
3.8.2把值解釋為True或False 67
3.9故意創建無限循環67
3.9.1 Finicky Counter程序簡介68
3.9.2通過break語句退出循環68
3.9.3通過continue語句跳回循環的開頭69
3.9.4理解break和continue的使用場景69
3.10使用複合條件69
3.10.1 Exclusive Network程序簡介70
3.10.2理解邏輯運算符not 72
3.10.3理解邏輯運算符and 73
3.10.4理解邏輯運算符or 74
3.11規劃程序74
3.11.1利用偽碼編制算法75
3.11.2逐步對算法進行提煉75
3.12回到Guess My Number遊戲76
3.12.1程序規劃76
3.12.2創建初始註釋塊77
3.12 .3引入random模塊77
3.12.4遊戲說明77
3.12.5設置初始值77
3.12.6創建猜測循環78
3.12.7向玩家表示祝賀78
3.12.8等待玩家退出78
3.13小結78

第4章for循環、字符串以及元組:Word Jumble遊戲80
4.1 Word Jumble遊戲簡介80
4.2使用for循環81
4.2.1 Loopy String程序簡介81
4.2.2理解for循環82
4.2.3創建for循環83
4.3通過for循環進行計數83
4.3.1 Counter程序簡介83
4.3.2前向計數84
4.3.3按五為單位進行計數85
4.3.4後向計數85
4.4對字符串使用序列運算符和函數86
4.4.1 Message Analyzer程序簡介86
4.4.2使用len()函數87
4.4.3使用in運算符87
4.5對字符串進行索引88
4.5.1 Random Access程序簡介88
4.5.2使用正的位置編號89
4.5.3使用負的位置編號90
4.5.4隨機訪問字符串元素91
4.6理解字符串的不變性92
4.7構建新字符串93
4.7.1 No Vowels程序簡介93
4.7.2創建常量94
4.7.3通過已有的字符串創建新字符串95
4.8對字符串進行切片操作96
4.8.1 Pizza Slicer程序簡介96
4.8.2理解None 97
4.8.3理解切片98
4.8.4創建切片98
4.8.5使用切片速記法99
4.9創建元組99
4.9. 1 Hero's Inventory程序簡介100
4.9.2創建空元組101
4.9.3把元組當作條件101
4.9.4創建帶有元素的元組102
4.9.5打印元組102
4.9.6遍曆元組中的元素102
4.10使用元組103
4.10.1 Hero's Inventory 2.0程序簡介103
4.10.2準備工作104
4.10.3對元組使用len()函數104
4.10.4對元組使用in運算符104
4.10.5對元組進行索引105
4.10.6對元組進行切片105
4.10.7理解元組的不變性106
4.10.8元組的連接操作106
4.11回到Word Jumble遊戲107
4.11.1準備工作107
4.11.2對題目的創建部分進行設計107
4.11.3創建空的題目字符串108
4.11.4設置循環108
4.11.5產生word中的隨機位置108
4.11.6創建新版的jumble 108
4.11.7創建新版的word 109
4.11. 8歡迎玩家的到來109
4.11.9獲取玩家的答案109
4.11.10向玩家表示恭喜109
4.11.11結束遊戲110
4.12小結110

第5章列表和字典:Hangman遊戲111
5.1 Hangman遊戲簡介111
5.2使用列表113
5.2.1 Hero's Inventory 3.0程序簡介113
5.2.2創建列表114
5.2.3對列表使用len()函數114
5.2.4對列表使用in運算符114
5.2.5對列表進行索引114
5.2.6對列表進行切片115
5.2.7對列表進行連接115
5.2.8理解列表的可變性115
5.2.9通過索引對列表元素進行賦值116
5.2.10通過切片對列表進行賦值116
5.2.11刪除列表元素116
5.2.12刪除列表切片117
5.3使用列表方法117
5.3.1 High Scores程序簡介117
5.3.2準備工作118
5.3.3顯示菜單118
5.3.4退出程序119
5.3.5顯示得分記錄119
5.3.6添加得分記錄119
5.3 .7刪除得分記錄120
5.3.8對得分記錄進行排序120
5.3.9處理無效選項121
5.3.10等一等用戶121
5.4理解元組和列表的使用場景122
5.5使用嵌套序列122
5.5.1 High Scores 2.0程序簡介122
5.5.2創建嵌套序列123
5.5.3訪問嵌套元素124
5.5.4序列的解包125
5.5.5準備工作125
5.5.6訪問嵌套的元組並顯示得分126
5.5. 7通過附加嵌套元組的方式添加得分記錄126
5.5.8處理無效菜單項126
5.5.9等一等用戶126
5.6理解共享引用127
5.7使用字典129
5.7.1 Geek Translator程序簡介129
5.7.2創建字典130
5.7.3訪問字典的值130
5.7.4準備工作132
5.7.5獲取值133
5.7.6增加鍵值對133
5.7.7替換鍵值對134
5.7.8刪除鍵值對134
5.7.9結束程序135
5.7.10理解字典的需求135
5.8回到Hangman遊戲136
5.8.1準備工作136
5.8.2創建常量137
5.8.3初始化變量140
5.8.4創建主循環140
5.8.5獲取用戶的答案140
5.8 .6判斷猜測結果141
5.8.7結束程序141
5.9小結142

第6章函數:Tic-Tac-Toe遊戲143
6.1 Tic-Tac-Toe遊戲簡介143
6.2創建函數144
6.2.1 Instructions程序簡介145
6.2.2定義函數146
6.2.3編制函數的文檔說明146
6.2.4調用函數147
6.2.5理解抽象147
6.3使用參數和返回值147
6.3.1 Receive and Return程序簡介148
6.3.2通過參數獲取信息149
6.3. 3通過返回值反饋信息149
6.3.4理解封裝150
6.3.5在同一個函數中接收和返回值150
6.3.6理解軟件復用151
6.4使用關鍵字參數和默認參數值152
6.4.1 Birthday Wishes程序簡介152
6.4.2使用位置形參和位置實參153
6.4.3使用位置形參和關鍵字實參154
6.4.4使用默認參數值154
6.5使用全局變量和常量156
6.5.1理解作用域156
6.5 .2 Global Reach程序簡介157
6.5.3從函數內部讀取全局變量158
6.5.4在函數內部屏蔽全局變量158
6.5.5從函數內部修改全局變量159
6.5.6理解何時使用全局變量和常量159
6.6回到Tic-Tac-Toe遊戲160
6.6.1規劃Tic-Tac-Toe遊戲160
6.6.2準備工作162
6.6.3 display_instruct()函數162
6.6.4 ask_yes_no()函數163
6.6.5 ask_number()函數163
6.6.6 pieces()函數164
6.6.7 new_board()函數164
6.6.8 display_board()函數164
6.6.9 legal_moves()函數165
6.6.10 winner()函數165
6.6.11 human_move()函數166
6.6 .12 computer_move()函數167
6.6.13 next_turn()函數169
6.6.14 congrat_winner()函數169
6.6.15 main()函數170
6.6.16啟動程序171
6.7小結171

第7章文件和異常:Trivia Challenge遊戲172
7.1 Trivia Challenge遊戲簡介172
7.2讀取文本文件173
7.2.1 Read It程序簡介173
7.2.2文件的打開和關閉175
7.2.3按字符讀取文件176
7.2.4按行讀取文件177
7.2. 5將所有行讀取為一個列表178
7.2.6對文件進行循環遍歷178
7.3寫入文本文件179
7.3.1 Write It程序簡介179
7.3.2將字符串寫入到文件180
7.3.3將字符串行表寫入到文件180
7.4在文件中存儲複雜數據182
7.4.1 Pickle It程序簡介182
7.4.2對數據進行Pickle處理並寫入文件182
7.4.3讀取文件中的數據並進行反Pickle處理184
7.4.4通過shelf保存序列化對象185
7.4.5通過shelf獲取序列化對象186
7.5處理異常187
7.5.1 Handle It程序簡介187
7.5.2使用try語句及except子句188
7.5.3指定異常類型188
7.5.4處理多種異常190
7.5.5獲取異常的參數191
7.5.6加上一個else子句191
7.6回到Trivia Challenge遊戲192
7.6.1理解數據文件結構192
7.6.2 open_file()函數193
7.6 .3 next_line()函數194
7.6.4 next_block()函數194
7.6.5 welcome()函數195
7.6.6遊戲初始化設置195
7.6.7提出問題195
7.6.8獲取答案196
7.6.9判斷答案196
7.6. 10獲取下一個問題196
7.6.11結束遊戲196
7.6.12啟動main()函數197
7.7小結197

第8章軟件對象:Critter Caretaker程序198
8.1 Critter Caretaker程序簡介198
8.2理解面向對象基礎知識200
8.3創建類、方法和對象200
8.3.1 Simple Critter程序簡介201
8.3.2定義類202
8.3.3定義方法202
8.3.4實例化對象203
8.3.5調用方法203
8.4使用構造器203
8.4.1 Constructor Critter程序簡介203
8.4.2創建構造器204
8.4.3創建多個對象205
8.5使用特性205
8.5.1 Attribute Critter程序簡介205
8.5.2初始化特性207
8.5.3訪問特性208
8.5.4打印對象208
8.6使用類特性和靜態方法209
8.6.1 Classy Critter程序簡介209
8.6.2創建類特性211
8.6.3訪問類特性211
8.6.4創建靜態方法212
8.6.5調用靜態方法212
8.7理解對象封裝213
8.8使用私有特性和私有方法213
8.8.1 Private Critter程序簡介214
8.8.2創建私有特性214
8.8.3訪問私有特性215
8.8.4創建私有方法216
8.8.5訪問私有方法216
8.8.6尊重對象的隱私217
8.8.7理解何時該實現私有策略217
8.9控制對特性的訪問218
8.9.1 Property Critter程序簡介218
8.9.2創建屬性219
8.9.3訪問屬性220
8.10回到Critter Caretaker程序221
8.10.1 Critter類222
8.10. 2創建Critter 224
8.10.3創建菜單系統224
8.10.4啟動程序225
8.11小結225

第9章面向對象編程:Blackjack遊戲227
9.1 Blackjack遊戲簡介227
9.2發送和接收消息228
9.2.1 Alien Blaster程序簡介228
9.2 .2發送消息230
9.2.3接收消息231
9.3組合多個對象231
9.3.1 Playing Cards程序簡介231
9.3.2創建Card類232
9.3.3創建Hand類232
9.3.4使用Card對象233
9.3.5通過Hand對象將多個Card對象組合起來234
9.4通過繼承創建新類235
9.5通過繼承擴展類235
9.5.1 Playing Cards 2.0程序簡介235
9.5.2創建一個基類236
9.5.3繼承基類237
9.5.4擴展派生類238
9.5.5使用派生類239
9.6改變繼承方法的行為241
9.6.1 Playing Cards 3.0程序簡介241
9.6.2創建基類242
9.6.3重寫基類方法242
9.6.4調用基類方法243
9.6.5使用派生類244
9.7理解多態245
9.8創建模塊245
9.8.1 Simple Game程序簡介246
9.8.2編寫模塊246
9.8.3引入模塊248
9.8.4使用引入的函數和類248
9.9回到Blackjack遊戲249
9.9.1 cards模塊249
9.9.2對類進行設計251
9.9.3為遊戲循環編寫偽碼252
9.9.4引入cards和games模塊253
9.9.5 BJ_Card類253
9.9.6 BJ_Deck類254
9.9. 7 BJ_Hand類254
9.9.8 BJ_Player類256
9.9.9 BJ_Dealer類256
9.9.10 BJ_Game類257
9.9.11 main()函數259
9.10小結260

第10章GUI開發:Mad Lib程序262
10.1 Mad Lib程序簡介262
10.2詳解GUI 264
10.3理解事件驅動編程265
10.4使用根窗體266
10.4.1 Simple GUI程序簡介266
10.4.2引入tkinter模塊268
10.4.3創建根窗體268
10.4.4修整根窗體268
10.4.5進入根窗體的事件循環269
10.5使用標籤269
10.5.1 Labeler程序簡介269
10.5.2準備工作269
10.5.3創建框架270
10.5.4創建標籤270
10.5.5進入根窗體的事件循環271
10.6使用按鈕271
10.6.1 Lazy Buttons程序簡介271
10.6.2準備工作271
10.6.3創建按鈕272
10.6.4進入根窗體的事件循環273
10.7利用類創建GUI 273
10.7.1 Lazy Buttons 2程序簡介273
10.7.2引入tkinter模塊273
10.7.3定義Application類273
10.7.4定義構造器方法274
10.7.5定義一個用於創建小部件的方法274
10.7.6創建Application對象275
10.8將小部件與事件處理器綁定起來275
10.8.1 Click Counter程序簡介275
10.8.2準備工作275
10.8.3綁定事件處理器276
10.8.4創建事件處理器276
10.8.5程序收尾工作277
10.9使用Text和Entry小部件以及Grid佈局管理器277
10.9.1 Longevity程序簡介277
10.9.2準備工作278
10.9.3利用Grid佈局管理器放置小部件278
10.9.4創建Entry小部件279
10.9.5創建Text小部件280
10.9.6利用文本型小部件獲取和插入文本280
10.9.7收尾工作281
10.10使用複選框282
10.10.1 Movie Chooser程序簡介282
10.10.2準備工作282
10.10.3使小部件的容器成為其唯一的引用283
10.10.4創建複選框283
10.10.5獲取複選框的狀態285
10.10.6收尾工作285
10.11使用單選框286
10.11.1 Movie Chooser 2程序簡介286
10.11.2準備工作286
10.11.3創建單選框287
10.11 .4從一組單選框中獲取選定值288
10.11.5收尾工作289
10.12回到Mad Lib程序289
10.12.1引入tkinter模塊289
10.12.2 Application類的構造器方法289
10.12.3 Application類的create_widgets()方法290
10.12.4 Application類的tell_story()方法292
10.12.5程序的主體部分293
10.13小結293

第11章圖形圖像:Pizza Panic遊戲294
11.1 Pizza Panic遊戲簡介294
11.2 pygame和livewires簡介296
11.3創建圖形窗口296
11.3.1 New Graphics Window程序簡介297
11.3.2引入games模塊297
11.3.3初始化圖形屏幕298
11.3.4啟動主循環298
11.4設置背景圖片299
11.4.1 Background Image程序簡介299
11.4.2加載圖片300
11.4.3設置背景301
11.5理解圖形坐標系統301
11.6顯示sprite 302
11.6.1 Pizza Sprite程序簡介303
11.6.2為sprite加載圖片304
11.6.3創建sprite 305
11.6.4把sprite放到屏幕上面去305
11.7顯示文本307
11.7.1 Big Score程序簡介307
11.7.2引入color模塊308
11.7.3創建Text對象308
11.7.4向屏幕添加Text對象309
11.8顯示消息309
11.8.1 You Won程序簡介309
11.8 .2引入color模塊311
11.8.3創建Message對象311
11.8.4使用屏幕的高度和寬度312
11.8.5把Message對象放到屏幕上面去312
11.9移動sprite 312
11.9.1 Moving Pizza程序簡介312
11.9.2設置sprite的速度值314
11.10處理屏幕邊界314
11.10.1 Bouncing Pizza程序簡介314
11.10.2準備工作315
11.10.3從Sprite派生出一個新類315
11.10.4重寫update()方法316
11.10.5收尾工作316
11.11處理鼠標輸入317
11.11.1 Moving Pan程序簡介317
11.11.2準備工作318
11.11.3讀取鼠標的x和y坐標318
11.11.4設置鼠標光標的可見性319
11.11.5捕獲圖形屏幕中的輸入319
11.11.6收尾工作320
11.12碰撞檢測320
11.12.1 Slippery Pizza程序簡介320
11.12.2準備工作322
11.12.3碰撞檢測322
11.12.4碰撞處理322
11.12.5收尾工作323
11.13回到Pizza Panic遊戲324
11.13.1準備工作324
11.13.2 Pan類324
11.13.3 Pizza類326
11.13.4 Chef類328
11.13.5 main()函數329
11.14小結330

第12章聲音、動畫以及程序開發:Astrocrash遊戲332
12.1 Astrocrash遊戲簡介332
12.2讀取鍵盤334
12.2.1 Read Key程序簡介334
12.2.2準備工作334
12.2.3按鍵判斷335
12.2.4收尾工作336
12.3旋轉sprite 336
12.3.1 Rotate Sprite程序簡介336
12.3. 2使用Sprite的angle屬性338
12.4創建動畫339
12.4.1 Explosion程序簡介339
12.4.2爆炸圖片說明339
12.4.3準備工作340
12.4.4創建圖片文件列表340
12.4.5創建Animation對象341
12.5播放聲音和音樂342
12.5.1 Sound and Music程序簡介342
12.5.2操作聲音342
12.5.3操作音樂345
12.5.4收尾工作346
12.6規劃Astrocrash遊戲346
12.6.1遊戲的功能347
12.6.2遊戲的類347
12.6. 3遊戲的資源348
12.7創建小行星348
12.7.1 Astrocrash01程序簡介348
12.7.2準備工作349
12.7.3 Asteroid類349
12.7.4 main()函數351
12.8旋轉飛船351
12.8.1 Astrocrash02程序簡介351
12.8. 2 Ship類352
12.8.3實例化Ship對象353
12.9移動飛船353
12.9.1 Astrocrash03程序簡介353
12.9.2引入math模塊354
12.9.3為Ship類添加類變量和常量354
12.9.4修改Ship的update( )方法354
12.10發射導彈355
12.10.1 Astrocrash04程序簡介356
12.10.2修改Ship的update()方法356
12.10.3 Missile類357
12.11控制導彈發射的頻率359
12.11.1 Astrocrash05程序簡介359
12.11.2為Ship類添加一個類常量360
12.11.3為Ship類創建構造器方法360
12.11.4修改Ship類的update()方法360
12.12處理碰撞361
12.12.1 Astrocrash06程序簡介361
12.12.2修改Missile類的update()方法362
12.12.3為Missile類添加die()方法362
12.12.4修改Ship類的update()方法362
12.12.5為Ship類添加die()方法362
12.12.6為Asteroid類添加一個類常量363
12.12 .7為Asteroid類添加die()方法363
12.13添加爆炸效果363
12.13.1 Astrocrash07程序簡介363
12.13.2 Wrapper類364
12.13.3 Collider類365
12.13.4修改Asteroid類366
12.13.5修改Ship類366
12.13 .6修改Missile類367
12.13.7 Explosion類367
12.14添加難度級別、得分記錄以及背景音樂368
12.14.1 Astrocrash08程序簡介368
12.14.2引入color模塊369
12.14.3 Game類369
12.14.4為Asteroid類添加類變量和類常量373
12.14.5修改Asteroid類的構造器方法373
12.14.6修改Asteroid類的die()方法374
12.14.7為Ship類添加類常量374
12.14.8修改Ship類的構造器方法375
12.14.9修改Ship類的update()方法375
12.14.10為Ship類添加die()方法375
12.14.11 main()函數375
12.15小結376

附錄A配套網站377
附錄B livewires參考379