産品特色
編輯推薦
Python 是一種強大的編程語言,容易學習而且充滿樂趣。但掌握瞭基本知識後,接下來做什麼?
本書包含瞭一組富有想象力的編程項目,它們將引導你用Python 來製作圖像和音樂、模擬現實世界的現象,並與
Arduino 和樹莓派這樣的硬件進行交互。你將學習使用常見的Python 工具和庫,如numpy、matplotlib 和pygame,
來完成以下工作:
● 利用參數方程和turtle模塊生成萬花尺圖案;
● 通過模擬頻率泛音在計算機上創作音樂;
● 將圖形圖像轉換為ASCII文本圖形;
● 編寫一個三維立體畫程序,生成隱藏在隨機圖案下的3D圖像;
● 通過探索粒子係統、透明度和廣告牌技術,利用OpenGL著色器製作逼真的動畫;
● 利用來自CT和MRI掃描的數據實現3D可視化;
● 將計算機連接到Arduino編程,創建響應音樂的激光秀。
通過本書,你可以享受作為極客的真正樂趣!
內容簡介
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
Python極客項目編程 下載 mobi epub pdf txt 電子書 格式