Log in Sign up
Trang chủeBookPython Programming for Raspberry Pi, Sams Teach Yourself in 24 Hours, 2nd edition
Python Programming for Raspberry Pi, Sams Teach Yourself in 24 Hours, 2nd edition

Python Programming for Raspberry Pi, Sams Teach Yourself in 24 Hours, 2nd edition

BRAND: PEARSON
Publisher:
PEARSON
Author:
Richard Blum; Christine Bresnahan
Edition:
(December 10, 2015) © 2016
eBook ISBN:
9780134389578
Print ISBN:
9780672337642
Type:
1 Year Subscription. Dành cho Cá nhân
eBook edition. 1 year Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In

Tổng quan sách

Chỉ trong 24 buổi, kéo dài một giờ hoặc ít hơn, Sams Teach Yourself Lập trình Python cho Raspberry Pi trong 24 giờ sẽ dạy bạn lập trình Python trên Raspberry Pi, để bạn có thể bắt đầu tạo các dự án tuyệt vời cho tự động hóa gia đình, rạp hát tại nhà, chơi game, v.v. Sử dụng cách tiếp cận đơn giản, từng bước của cuốn sách này, bạn sẽ đi từ những điều cơ bản tuyệt đối đến kết nối mạng và web, đa phương tiện và thậm chí kết nối với các mạch điện tử để cảm biến và robot. Mỗi bài học và ứng dụng nghiên cứu điển hình đều được xây dựng dựa trên những gì bạn đã học, mang lại cho bạn nền tảng vững chắc để thành công trong thế giới thực!Hướng dẫn từng bước cẩn thận hướng dẫn bạn qua các tác vụ lập trình Raspberry Pi Python phổ biến nhất.Các câu đố ở cuối mỗi chương giúp bạn kiểm tra kiến ​​thức của mình. Ghi chú By the Way trình bày thông tin thú vị liên quan đến cuộc thảo luận.Bạn có biết không? mẹo đưa ra lời khuyên hoặc chỉ cho bạn những cách dễ dàng hơn để thực hiện nhiệm vụ.Coi chừng! cảnh báo cảnh báo bạn về các vấn đề có thể xảy ra và cho bạn lời khuyên về cách tránh chúng.
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Programming with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Who Should Read This Book? . . . . . . . . . . . . . . . . . . . . . . 3 Conventions Used in This Book . . . . . . . . . . . . . . . . . . . . . . . . 3Part I: Python Programming on the Raspberry PiHOUR 1: Setting Up the Raspberry Pi. . . . . . . . . . . . . . . . . . . . . . 5Obtaining a Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . 5Acquiring a Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Determining the Necessary Peripherals . . . . . . . . . . . . . . . . . . . . . . . 10Nice Additional Peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Deciding How to Purchase Peripherals . . . . . . . . . . . . . . . . . 18Getting Your Raspberry Pi Working . . . . . . . . . . . . . . . . . . . 18Troubleshooting Your Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . 24Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27HOUR 2: Understanding the Raspbian Linux Distribution. . . . . . . . . . . . . . . . . 29Learning About Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Interacting with the Raspbian Command Line . . . . . . . . . . . .. . . . 30Interacting with the Raspbian GUI . . . . . . . . . . . . . . . .. . . . . . . . . 35The LXDE Graphical Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44HOUR 3: Setting Up a Programming Environment. . . . . . . . . . . . . . . . . . . 47Exploring Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Checking Your Python Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Installing Python and Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Learning About the Python Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . 52Learning About the Python Interactive Shell . . . . . . . . . .. . . . . . . . . . . . . 53Learning About the Python Development Environment . . . . . . . . . . . . . 57Creating and Running Python Scripts . . . . . . . . . . . . . .. . . . . . . . . . . 63Knowing Which Tool to Use and When . . . . . . . . . .. . . . . . . . . 68Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Part II: Python FundamentalsHOUR 4: Understanding Python Basics. . . . . . . . . . .. . . . . . . . . . . . . . 73Producing Python Script Output . . . . . . . . . . . . . . . . . . . . . . . . . . 73Formatting Scripts for Readability . . . . . . . . . . . . . . . . . . . . . 80Understanding Python Variables . . . . . . . . . . . . . . . . . . . . . . . . 83Assigning Value to Python Variables . . . . . . . . . . . . . . . . . . . . . 85Learning About Python Data Types . . . . . . . . . . . . . . . . . . . . . . 89Allowing Python Script Input . . . . . . . . . . . . . . . . . . . . . . . . 90Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Workshop . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 97HOUR 5: Using Arithmetic in Your Programs. . . . . . . . . . .. . . . . . . . . 99Working with Math Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Calculating with Fractions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Using Complex Number Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Getting Fancy with the math Module . . . . . . . . . . . . . . . . . . . . . . . . . . 108Using the NumPy Math Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Summary . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . 114Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Workshop . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 115HOUR 6: Controlling Your Program. . . . . . . . . . . . . . . . . . . . . . . . . . 117Working with the if Statement . . . . . . . . . . . . . . . . . . . . . . . . . 117Grouping Multiple Statements . . . . . . . . . . . . . . . . . . . . . . .. . . . . 119Adding Other Options with the else Statement . . . . . . . . . . . . . .. . . 121Adding More Options Using the elif Statement . . . . . . . . . . .. . . . 123Comparing Values in Python . . . . . . . . . . . . . . . . . . . . . . . . 126Checking Complex Conditions . . . . . . . . . . . . . . . . . . . . . . . . . 130Negating a Condition Check . . . . . . . . . . . . . . . . . . . . . . . . . 131Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Workshop . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . 133HOUR 7: Learning About Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . 137Performing Repetitive Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Using the for Loop for Iteration . . . . . . . . . . . . . . . . . . . . . . . 137Using the while Loop for Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . 148Creating Nested Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Workshop . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 157Part III: Advanced PythonHOUR 8: Using Lists and Tuples. . . . . . . . . . . . . . . . . . . . . . . . . . 159Introducing Tuples . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 159Introducing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Using Multidimensional Lists to Store Data . . . . . . . . . . . . . . . 171Working with Lists and Tuples in Your Scripts . . . . . . . . . . . . 172Creating Lists by Using List Comprehensions . . . . . .. . . . . . 173Working with Ranges . . . . . . . . . . . . . . . . . . . . . . . . . 174Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 175Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175Workshop . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 176HOUR 9: Dictionaries and Sets. . . . . . . . . . . . .. . . . . . . . . . 179Understanding Python Dictionary Terms . . . . . . . . . . . .. . . 179Exploring Dictionary Basics . . . . . . . . . . . . . . . . . . . . . . 180Programming with Dictionaries . . . . . . . . . . . .. . . . . . . 186Understanding Python Sets . . . . . . . . . . . . . . . . . . . . . . . 192Exploring Set Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Obtaining Information from a Set . . . . . . . . . . .. . . . . . . . 194Modifying a Set . . . . . . . . . . . . . . . . . . . . . . . . . 197Programming with Sets . . . . . . . . . . . . . . . . . . . . . 199Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203HOUR 10: Working with Strings. . . . . . . . . . . . . . . . . . . . . . . . 207The Basics of Using Strings . . . . . . . . . . . . . . . . . . . . . . . . . 207Using Functions to Manipulate Strings . . . . . . . . . . . . . . . 210Formatting Strings for Output . . . . . . . . . . 217Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Workshop . . . . . . . . . . . . . . . . . . . . . . . . . 223HOUR 11: Using Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Understanding Linux File Structures . . . . . . . . . . . . .. . . . 225Managing Files and Directories via Python . . . . . . . . . . 227Opening a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Reading a File . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 233Closing a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Writing to a File . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 240Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Workshop . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 247HOUR 12: Creating Functions. . . . . . . . . . . . . . .. . . . . 249Utilizing Python Functions in Your Programs . . . . . . . . . . . . 249Returning a Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Passing Values to Functions . . . . . . . . . . . . . . . . . . . 254Handling Variables in a Function . . . . . . . . . . . . . . . . 260Using Lists with Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 263Using Recursion with Functions . . . . . . . . . . . . . . . . 264Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 265Workshop . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 266HOUR 13: Working with Modules. . . . . . . . . . . . . . . . . 269Introducing Module Concepts . . . . .. . . . . . . . . . . . . . . . 269Exploring Standard Modules . . . . . . . . .. . . . . . . . . . . . . 271Learning About Python Modules . . . . . . . . . . . . . . . . . . . . . . . 273Creating Custom Modules . . . . . . . . . . . . . . . . . . . . . . . . . 277Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 288Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288HOUR 14: Exploring the World of Object-Oriented Programming. . . . . . . . 291Understanding the Basics of Object-Oriented Programming . . . . . . . . . 291Defining Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Sharing Your Code with Class Modules . . . . . . . . . . . . 302Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305Workshop . . . . . . . . . . . . . . . .. . . . . . . . . . 305HOUR 15: Employing Inheritance. . . . . . . . . . . . . . . . . . 307Learning About the Class Problem. . . . . . . . . . . . . . . .. . . . . 307Understanding Subclasses and Inheritance . . . . . . . . . . . . . 308Using Inheritance in Python . . . . . . . . . . . . . . . . . . . . . . . .. . 310Using Inheritance in Python Scripts . . . . . . . . . . . . . . . . 316Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328HOUR 16: Regular Expressions. . . . . . . . .. . . . . . . . . . . . . . . . 331What Are Regular Expressions? . . . . . . . . . . . . . .. . . . . . . . . . . . . 331Working with Regular Expressions in Python. . . . . . . . . . . .. . . . . . 333The match() Function . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 333The search() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334The findall() and finditer() Functions . . . . . . . . . . . . . . . . . . . . . 334Defining Basic Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 335Using Advanced Regular Expressions Features . . . . . . . . . . . . . . 343Working with Regular Expressions in Your Python Scripts . . . . . . . . 346Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 348Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349HOUR 17: Exception Handling. . . . . . . . . . . . . . . . . . . . . . 351Understanding Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Handling Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356Handling Multiple Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . 358Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 370Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Part IV: Graphical ProgrammingHOUR 18: GUI Programming. . . . . . . . . . . . . . . . . . . . . . . . 373Programming for a GUI Environment . . . . . . . . . . . .. . . . . . . . 373Examining Python GUI Packages . . . . . . . . . . . . . . . . . . . 375Using the tkinter Package . . . . . . . . . . . . . . . . . . . . . . . . . 376Exploring the tkinter Widgets . . . . . . . . . . . . . . . . . . .. . . . . . . . 384Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395HOUR 19: Game Programming. . . . . . . . . . . . . . . . . 397Understanding Game Programming . . . . . . . . .. . .. . . 397Learning About Game Tools . . . . . . . . . . . . . . . . . . . . . . 398Setting Up the PyGame Library . . . . . . . . . . . . . . . . . . . . 399Using PyGame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Learning More About PyGame . . . . . . . . . . . . .. . . 409Dealing with PyGame Action . . . . . . . . . . . . . . . . . . . . 414Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 424Part V: Business ProgrammingHOUR 20: Using the Network. . . . . . . . . . . . . . . . . . . . . 427Finding the Python Network Modules . . . . . . . . .. . . . . . . 427Working with Email Servers . . . . . . . . . . . . . . . . . . . . . . . 428Working with Web Servers . . . . . . . . . . . . . . . . . . . . . .. . 436Linking Programs Using Socket Programming . . . . . . . . . . . . 442Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 449Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 449Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450HOUR 21: Using Databases in Your Programming. . . . . . . . . . . . 453Working with the MySQL Database . . . . . . . . . . . . . . . 453Using the PostgreSQL Database . . . . . . . . . . . .. . . . . . 464Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472Workshop . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 473HOUR 22: Web Programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475Running a Web Server on the Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475Programming with the Common Gateway Interface . . . . . . . . . . . . 478Expanding Your Python Webpages . . . . . . . . . . . . . . . .. . . . . . 481Processing Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Part VI: Raspberry Pi Python ProjectsHOUR 23: Creating Basic Pi/Python Projects. . . . . . . . . . . . . . . . . . . . 497Thinking About Basic Pi/Python Projects . . . . . . . . . . . . . . . . 497Displaying HD Images via Python . . . . . . . . . . . . . . . . . . . 497Playing Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 517Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 530Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 530HOUR 24: Working with Advanced Pi/Python Projects. . . . . . . . . . . . 533Exploring the GPIO Interface . . . . . . . . . . . . . . . . . . . . . 533Using the RPi.GPIO Module . . . . . . . . . .. . . . . 539Controlling GPIO Output . . . . . . . . . . . . . . . . . . . . 541Detecting GPIO Input . . . . . . . . . . . . . . . . . .. . . . . . . . 546Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554AppendixesAPPENDIX A: Loading the Raspbian Operating System onto an SD Card. . . . . . . . . 557Downloading NOOBS . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 558Verifying NOOBS Checksum . . . . . . . . . . . . . . . . . . . . . . . . . . . 559Unpacking the NOOBS Zip File . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 561Formatting the MicroSD Card . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 562Copying NOOBS to a MicroSD Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566APPENDIX B: Raspberry Pi Models Synopsis. . . . . . . . . . . . . . . . . . . . . . . 567Raspberry Pi 2 Model B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567Raspberry Pi 1 Model B+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568Raspberry Pi 1 Model A+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569Older Raspberry Pi Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570Index .............................................................................................. 573
Chat Zalo