You are on page 1of 8

HOUR 1: Setting Up the Raspberry Pi

What Is a Raspberry Pi?.


Acquiring a Raspberry Pi
What Raspberry Pi Peripherals Are Necessary?
Nice Additional Peripherals.
Deciding How to Purchase Peripherals
Getting Your Raspberry Pi Working
Troubleshooting Your Raspberry Pi

HOUR 2: Understanding the Raspbian Linux Distribution


Learning About Linux
Interacting with the Raspbian Command Line
Interacting with the Raspbian GUI

HOUR 3: Setting Up a Programming Environment


Exploring Python
Checking Your Python Environment
Installing Python and Tools
Learning About the Python Interpreter
Learning About the Python Interactive Shell
Learning About the Python Development Environment Shell
Creating Python Scripts

HOUR 4: Understanding Python Basics


Producing Python Script Output
Formatting Scripts for Readability
Understanding Python Variables
Assigning Value to Python Variables
Learning About Python Data Types
Allowing Python Script Input

HOUR 5: Using Arithmetic in Your Programs. .

Working with Math Operators


Calculating with Fractions
Using Complex Number Math
Getting Fancy with the math Module
Using the NumPy Math Libraries
HOUR 6: Controlling Your Program
Working with the if Statement
Grouping Multiple Statements vii

Adding Other Options with the else Statement


Adding More Options Using the elif Statement
Comparing Values in Python
Checking Complex Conditions
Negating a Condition Check
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . .
..................... 129

HOUR 7: Learning About Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131


Performing Repetitive Tasks .................................. 131 Using the for Loop
for Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Using the while Loop for Iteration . . . . . . . . .
.................... 143 Creating Nested Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.................... 150 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

Part III: Advanced Python

HOUR 8: Using Lists and Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155


Introducing Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Introducing Lists ............

.............................. 160
Using Multidimensional Lists to Store Data ....................... 167 Working with
Lists and Tuples in Your Scripts ..................... 168 Creating Lists by Using List
Comprehensions. . . . . . . . . . . . . . . . . . . . . . 170
Working with Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Summary . . . . . . . . . . . . . . . . . . .
............................ 172 Q&A .................................................. 172
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

HOUR 9: Dictionaries and Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175


Understanding Python Dictionary Terms. . . . . . . . . . . . . . . . . . . . . . . . . 175
Exploring Dictionary Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Programming with Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
viii Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours

Understanding Python Sets .................................. 187 Exploring Set Basics. . .


..................................... 187
Obtaining Information from a Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Modifying a Set. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Programming with Sets .....

................................ 193 Summary ...............................................

197 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Workshop. . . . . . . . . . . . . . . . . . . . .


.......................... 197

HOUR 10: Working with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199


The Basics of Using Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Using Functions to Manipulate Strings . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Formatting Strings for Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

HOUR 11: Using Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217


Understanding Linux File Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Opening a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Reading a File. . . . . . . . . . . . . . . . .
........................... 224 Closing a File ............................................ 230
Writing to a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Summary . . . . . . . . . . . . . . . . . . . . .
.......................... 237 Q&A .................................................. 237
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

HOUR 12: Creating Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239


Utilizing Python Functions in Your Programs. . . . . . . . . . . . . . . . . . . . . . 239
Returning a Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Passing Values to
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Handling Variables in a Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Using Lists with Functions ................................... 253 Using Recursion with
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Contents ix

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

HOUR 13: Working with Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257


Introducing Module Concepts ................................ 257 Exploring Standard
Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Learning About Python Modules ............

.................. 261 Creating Custom Modules ................................... 265


Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.................... 275 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

HOUR 14: Exploring the World of Object-Oriented Programming . . . . . . . . . . . 277


Understanding the Basics of Object-Oriented Programming . . . . . . . . . . . 277
Defining Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Sharing Your Code with Class Modules . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

HOUR 15: Employing Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293


Learning About the Class Problem .................. ....... .... 293 Understanding
Subclasses and Inheritance . . . . . . . . . . . . . . . . . . . . . . . 294
Using Inheritance in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Using Inheritance in Python Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.................... 314 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

HOUR 16: Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317


What Are Regular Expressions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Working with Regular Expressions in Python. . . . . . . . . . . . . . . . . . . . . . 319
Defining Basic Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Using Advanced Regular Expressions Features . . . . . . . . . . . . . . . . . . . . . 330
x Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours

Working with Regular Expressions in Your Python Scripts . . . . . . . . . . . . 332


Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

HOUR 17: Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337


Understanding Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Handling Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Handling Multiple Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

Part IV: Graphical Programming

HOUR 18: GUI Programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361


Programming for a GUI Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Examining Python GUI Packages .............................. 363 Using the tkinter
Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Exploring the tkinter Widgets. . . . . . . . . . . . .
................... 372 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Q&A . . . . .
............................................. 384 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
......... 384

HOUR 19: Game Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387


Understanding Game Programming ............................ 387 Learning About
Game Frameworks and Libraries .................. 388
Setting Up the PyGame Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Using PyGame . . . . . . . . . .
.................................. 394 Learning More About PyGame . . . . . . . . . . . . . . . . . . . . . . . . . .
....... 403 Dealing with PyGame Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Summary . . .
............................................ 418 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
..... 418 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Contents xi

Part V: Business Programming

HOUR 20: Using the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423


Finding the Python Network Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Working with Email Servers .................................. 424 Working with Web
Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Linking Programs Using Socket Programming . . . . . . . . . . . . . . . . . . . . . 438
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.................... 445 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

HOUR 21: Using Databases in Your Programming . . . . . . . . . . . . . . . . . . . . . 447


Working with the MySQL Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Using the PostgreSQL Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

HOUR 22: Web Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469


Running a Web Server on the Pi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Programming with the Common
Gateway Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Expanding Your Python Webpages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Processing Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488

Part VI: Raspberry Pi Python Projects1

HOUR 23: Creating Basic Pi/Python Projects . . . . . . . . . . . . . . . . . . . . . . . . . 493


Thinking About Basic Pi/Python Projects. . . . . . . . . . . . . . . . . . . . . . . . . 493
Displaying HD Images via Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Playing Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Creating a Special Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
xii Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


................. 526 Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

HOUR 24: Working with Advanced Pi/Python Projects . . . . . . . . . . . . . . . . . . 529


Exploring the GPIO Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Using the RPi.GPIO Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Controlling GPIO Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Detecting GPIO Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Workshop. . . . . . . . . . . . . . . . . .
xii Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours

Summary ............................................... 526 Q&A .................................................. 526


Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

HOUR 24: Working with Advanced Pi/Python Projects . . . . . . . . . . . . . . . . . . 529


Exploring the GPIO Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Using the RPi.GPIO Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Controlling GPIO Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Detecting GPIO Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

You might also like