Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。通過Python編程,我們能夠解決現實生活中的很多任務。 本書通過14個有趣的項目,幫助和鼓勵讀者探索Python編程的世界。全書共14章,分別介紹了通過Python編程實現的一些有趣項目,包括解析iTunes播放列表、模擬人工生命、創建ASCII碼藝術圖、照片拼接、生成三維立體圖、創建粒子模擬的煙花噴泉效果、實現立體光線投射算法,以及用Python結合Arduino和樹莓派等硬件的電子項目。本書并不介紹Python語言的基礎知識,而是通過一系列不簡單的項目,展示如何用Python來解決各種實際問題,以及如何使用一些流行的Python庫。 本書適合那些想要通過Python編程來進行嘗試和探索的讀者,適合了解基本的Python語法和基本的編程概念的讀者進一步學習,對于Python程序員有一定的啟發和參考價值。
Python 是一種強大的編程語言,容易學習而且充滿樂趣。但掌握了基本知識后,接下來做什么? 本書包含了一組富有想象力的編程項目,它們將引導你用Python 來制作圖像和音樂、模擬現實世界的現象,并與 Arduino 和樹莓派這樣的硬件進行交互。你將學習使用常見的Python 工具和庫,如numpy、matplotlib 和pygame, 來完成以下工作: ● 利用參數方程和turtle模塊生成萬花尺圖案; ● 通過模擬頻率泛音在計算機上創作音樂; ● 將圖形圖像轉換為ASCII文本圖形; ● 編寫一個三維立體畫程序,生成隱藏在圖案下的3D圖像; ● 通過探索粒子系統、透明度和廣告牌技術,利用OpenGL著色器制作逼真的動畫; ● 利用來自CT和MRI掃描的數據實現3D可視化; ● 將計算機連接到Arduino編程,創建響應音樂的激光秀。 通過本書,你可以享受作為極客的真正樂趣!
Mahesh Venkitachalam是一位擁有二十年編程經驗的軟件工程師。 他從八年級就開始培養對技術的熱情,匯集成了他受歡迎的電子和編程博客:electronut.in。
第1章 解析iTunes播放列表 3
1.1iTunes播放列表文件剖析3
1.2所需模塊5
1.3代碼5
1.3.1查找重復5
1.3.2提取重復6
1.3.3查找多個播放列表中
共同的音軌7
1.3.4收集統計信息8
1.3.5繪制數據8
1.3.6命令行選項9
1.4完整代碼10
1.5運行程序13
1.6小結14
1.7實驗14
第2章萬花尺15
2.1參數方程16
2.1.1萬花尺方程17
2.1.2海龜畫圖19
2.2所需模塊20
2.3代碼20
2.3.1Spiro構造函數20
2.3.2設置函數21
2.3.3restart()方法21
2.3.4draw()方法22
2.3.5創建動畫22
2.3.5SpiroAnimator類23
2.3.5genRandomParams()方法24
2.3.6重新啟動程序24
2.3.7update()方法25
2.3.8顯示或隱藏光標25
2.3.9保存曲線25
2.3.10解析命令行參數和初始化26
2.4完整代碼27
2.5運行萬花尺動畫32
2.6小結33
2.7實驗33
第二部分模擬生命
第3章Conway生命游戲37
3.1工作原理38
3.2所需模塊39
3.3代碼40
3.3.1表示網格40
3.3.2初始條件41
3.3.3邊界條件41
3.3.4實現規則42
3.3.5向程序發送命令行參數43
3.3.6初始化模擬43
3.4完整代碼44
3.5運行模擬人生的游戲46
3.6小結47
3.7實驗47
第4章用Karplus-Strong算法產生
音樂泛音49
4.1工作原理51
4.1.1模擬51
4.1.2創建WAV文件52
4.1.3小調五聲音階53
4.2所需模塊54
4.3代碼54
4.3.1用deque實現環形緩沖區54
4.3.2實現Karplus-Strong算法55
4.3.3寫WAV文件56
4.3.4用pygame播放WAV
文件56
4.3.5main()方法57
4.4完整代碼58
4.5運行撥弦模擬61
4.6小結62
4.7實驗62
第5章類鳥群:仿真鳥群63
5.1工作原理64
5.2所需模塊64
5.3代碼64
5.3.1計算類鳥群的位置和速度65
5.3.2設置邊界條件66
5.3.3繪制類鳥群67
5.3.4應用類鳥群規則68
5.3.5添加個體70
5.3.6驅散類鳥群71
5.3.7命令行參數71
5.3.8Boids類71
5.4完整代碼72
5.5運行類鳥群模擬75
5.6小結76
5.7實驗76
第三部分圖片之樂
第6章ASCII文本圖形79
6.1工作原理80
6.2所需模塊81
6.3代碼81
6.3.1定義灰度等級和網格82
6.3.2計算平均亮度82
6.3.3從圖像生成ASCII內容83
6.3.4命令行選項84
6.3.5將ASCII文本圖形字符
串寫入文本文件84
6.4完整代碼85
6.5運行ASCII文本圖形生成程序87
6.6小結87
6.7實驗88
第7章照片馬賽克89
7.1工作原理90
7.1.1分割目標圖像90
7.1.2平均顏色值91
7.1.3匹配圖像91
7.2所需模塊92
7.3代碼92
7.3.1讀入小塊圖像92
7.3.2計算輸入圖像的平均
顏色值93
7.3.3將目標圖像分割成網格93
7.3.4尋找小塊的匹配94
7.3.5創建圖像網格95
7.3.6創建照片馬賽克96
7.3.7添加命令行選項97
7.3.8控制照片馬賽克的大小97
7.4完整代碼98
7.6運行照片馬賽克生成程序102
7.7小結103
7.7實驗103
第8章三維立體畫105
8.1工作原理106
8.1.1感知三維立體畫中的深度106
8.1.2深度圖108
8.2所需模塊109
8.3代碼109
8.3.1重復給定的平鋪圖像109
8.3.2從創建隨機圓平鋪110
8.3.3創建三維立體畫111
8.3.4命令行選項112
8.4完整代碼113
8.5運行三維立體畫生成程序115
8.6小結117
8.7實驗117
第四部分走進三維
第9章理解OpenGL121
9.1老式OpenGL122
9.2現代OpenGL:三維圖形管線124
9.2.1幾何圖元124
9.2.2三維變換125
9.2.3著色器127
9.2.4頂點緩沖區128
9.2.5紋理貼圖129
9.2.6顯示OpenGL129
9.3所需模塊130
9.4代碼130
9.4.1創建OpenGL窗口130
9.4.2設置回調131
9.4.3Scene類133
9.5完整代碼137
9.6運行OpenGL應用程序142
9.7小結143
9.8實驗143
第10章粒子系統145
10.1工作原理146
10.1.1為粒子運動建模147
10.1.2設置較大范圍147
10.1.3渲染粒子149
10.1.4利用OpenGL混合來
創建更逼真火花149
10.1.5使用公告板150
10.1.6生成火花動畫151
10.2所需模塊151
10.3粒子系統的代碼151
10.3.1定義粒子的幾何形狀152
10.3.2為粒子定義時間延遲
數組153
10.3.3設置粒子初始速度153
10.3.4創建頂點著色器154
10.3.5創建片段著色器156
10.3.6渲染156
10.3.7Camera類158
10.4粒子系統完整代碼158
10.5盒子代碼164
10.6主程序代碼166
10.6.1每步更新這些粒子167
10.6.2鍵盤處理程序168
10.6.3管理主程序循環168
10.7完整主程序代碼169
10.8運行程序172
10.9小結172
10.10實驗172
第11章體渲染173
11.1工作原理174
11.1.1數據格式174
11.1.2生成光線175
11.1.3顯示OpenGL窗口177
11.2所需模塊178
11.3項目代碼概述178
11.4生成三維紋理178
11.5完整的三維紋理代碼180
11.6生成光線181
11.6.1定義顏色立方體的
幾何形狀182
11.6.2創建幀緩沖區對象184
11.6.3渲染立方體的背面185
11.6.4渲染立方體的正面185
11.6.5渲染整個立方體186
11.6.6調整大小處理程序187
11.7完整的光線生成代碼187
11.8體光線投射192
11.8.1頂點著色器194
11.8.2片段著色器194
11.9完整的體光線投射代碼196
11.10二維切片199
11.10.1頂點著色器201
11.10.2片段著色器202
11.10.3針對二維切片的
用戶界面202
11.11完整的二維切片代碼203
11.12代碼整合206
11.13完整的主文件代碼207
11.14運行程序209
11.15小結210
11.16實驗210
第五部分玩硬件
第12章Arduino簡介215
12.1Arduino216
12.2Arduino生態系統217
12.2.1語言218
12.2.2IDE218
12.2.3社區218
12.2.4外設219
12.3所需模塊219
12.4搭建感光電路219
12.4.1電路工作原理219
12.4.2Arduino程序220
12.4.3創建實時圖表221
12.5Python代碼222
12.6完整的Python代碼224
12.7運行程序226
12.8小結227
12.9實驗227
第13章激光音樂秀229
13.1用激光產生圖案230
13.1.1電機控制230
13.1.2快速傅里葉變換232
13.2所需模塊233
13.2.1搭建激光秀234
13.2.2連接電機驅動器236
13.3Arduino程序237
13.3.1配置Arduino數字
輸出引腳238
13.3.2主循環238
13.3.3停止電機240
13.4Python代碼240
13.4.1選擇音頻設備241
13.4.2從輸入設備讀取數據241
13.4.3計算數據流的FFT242
13.4.4從FFT值提取頻率
信息243
13.4.5將頻率轉換為電機
速度和方向243
13.4.6測試電機設置244
13.4.7命令行選項245
13.4.8手動測試245
13.5完整的Python代碼246
13.6運行程序249
13.7小結250
13.8實驗250
第14章基于樹莓派的天氣監控器253
14.1硬件254
14.1.1DHT11溫濕度傳感器254
14.1.2樹莓派255
14.1.3設置樹莓派255
14.2安裝和配置軟件256
14.2.1操作系統257
14.2.2初始配置257
14.2.3Wifi設置257
14.2.4設置編程環境258
14.2.5通過SSH連接259
14.2.6Web框架Bottle259
14.2.7用flot繪制260
14.2.8關閉樹莓派261
14.3搭建硬件262
14.4代碼263
14.4.1處理傳感器數據請求264
14.4.2繪制數據264
14.4.3update()方法267
14.4.4用于LED的JavaScript
處理程序267
14.4.5添加交互性268
14.5完整代碼269
14.6運行程序272
14.7小結273
14.8實驗273
附錄A軟件安裝275
附錄B基礎實用電子學281
附錄C樹莓派的建議和技巧289
雖然原版書名沒有極客,但是這些項目大部分都是極客類項目,所以說重點不在python,而在于極客,想用此書來python進階要注意
這個應該挺有意思的
很好很好很好很好
性價比很高
整體感覺不錯
好好好好好好好好好好好好好好好
學習編程用的,書的小項目還是挺不錯的。
書很好!!
非常好的一本書
書很新很好
挺有意思的一本書
包裝不錯,總體還可以