Python極客項目編程 (Python Playground) Python极客项目编程

溫科特卡姆 (Mahesh Venkitachalam)

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

商品描述

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。通過Python編程,我們能夠解決現實生活中的很多任務。
本書通過14個有趣的項目,幫助和鼓勵讀者探索Python編程的世界。全書共14章,分別介紹了通過Python編程實現的一些有趣項目,包括解析iTunes播放列表、模擬人工生命、創建ASCII碼藝術圖、照片拼接、生成三維立體圖、創建粒子模擬的煙花噴泉效果、實現立體光線投射算法,以及用Python結合Arduino和樹莓派等硬件的電子項目。本書並不介紹Python語言的基礎知識,而是通過一系列不簡單的項目,展示如何用Python來解決各種實際問題,以及如何使用一些流行的Python庫。
本書適合那些想要通過Python編程來進行嘗試和探索的讀者,適合瞭解基本的Python語法和基本的編程概念的讀者進一步學習,對於Python程序員有一定的啟發和參考價值。

作者簡介

Mahesh Venkitachalam是一位擁有二十年編程經驗的軟件工程師。他從八年級就開始培養對技術的熱情,匯集成了他受歡迎的電子和編程博客:electronut.in。

目錄大綱

第1章解析iTunes播放列表3 
1.1 iTunes播放列表文件剖析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.1 Spiro構造函數20 
2.3.2設置函數21 
2.3.3 restart()方法21 
2.3.4 draw()方法22 
2.3.5創建動畫22 
2.3.5 SpiroAnimator類23 
2.3.5 genRandomParams()方法24 
2.3.6重新啟動程序24 
2.3.7 update()方法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.5 main()方法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.8 Boids類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章理解OpenGL 121 
9.1老式OpenGL 122 
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顯示OpenGL 129 
9.3所需模塊130 
9.4代碼130 
9.4.1創建OpenGL窗口130 
9.4.2設置回調131 
9.4.3 Scene類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.7 Camera類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.1 Arduino 216 
12.2 Arduino生態系統217 
12.2.1語言218 
12.2.2 IDE 218 
12.2.3社區218 
12.2.4外設219 
12.3所需模塊219 
12.4搭建感光電路219 
12.4. 1電路工作原理219 
12.4.2 Arduino程序220 
12.4.3創建實時圖表221 
12.5 Python代碼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.3 Arduino程序237 
13.3.1配置Arduino數字輸出引腳238 
13.3 .2主循環238 
13.3.3停止電機240 
13.4 Python代碼240 
13.4.1選擇音頻設備241 
13.4.2從輸入設備讀取數據 241 
13.4.3計算數據流的FFT 242 
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.1 DHT11溫濕度傳感器254 
14.1.2樹莓派255 
14.1. 3設置樹莓派255 
14.2安裝和配置軟件256 
14.2.1操作系統257 
14.2.2初始配置257 
14.2.3 Wifi設置257 
14.2.4設置編程環境258 
14.2.5通過SSH連接259 
14.2.6 Web框架Bottle 259 
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.3 update()方法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