David Griffiths, Paul Barry - Head First Programming_ A Learner's Guide to Programming Using the Pyt

This preview shows page 1 out of 442 pages.

Unformatted text preview: Advance Praise for Head First Programming “Head First Programming does a great job teaching programming using an iterative process. Add a little, explain a little, make the program a little better. This is how programming works in the real world and Head First Programming makes use of that in a teaching forum. I recommend this book to anyone who wants to start dabbling in programming but doesn’t know where to start. I’d also recommend this book to anyone not necessarily new to programming, but curious about Python. It’s a great intro to programming in general and programming Python specifically.” — Jeremy Jones, Coauthor of Python for Unix and Linux System Administration “David Griffiths and Paul Barry have crafted the latest gem in the Head First series. Do you use a computer, but are tired of always using someone else’s software? Is there something you wish your computer would do but wasn’t programmed for? In Head First Programming, you’ll learn how to write code and make your computer do things your way.” — Bill Mietelski, Software Engineer “Head First Programming provides a unique approach to a complex subject. The early chapters make excellent use of metaphors to introduce basic programming concepts used as a foundation for the rest of the book. This book has everything, from web development to graphical user interfaces and game programming.” — Doug Hellmann, Senior Software Engineer, Racemi “A good introduction to programming using one of the best languages around, Head First Programming uses a unique combination of visuals, puzzles, and exercises to teach programming in a way that is approachable and fun.” — Ted Leung, Principal Software Engineer, Sun Microsystems Praise for other Head First books “Kathy and Bert’s Head First Java transforms the printed page into the closest thing to a GUI you’ve ever seen. In a wry, hip manner, the authors make learning Java an engaging ‘what’re they gonna do next?’ experience.” — Warren Keuffel, Software Development Magazine “Beyond the engaging style that drags you forward from know-nothing into exalted Java warrior status, Head First Java covers a huge amount of practical matters that other texts leave as the dreaded ‘exercise for the reader....’ It’s clever, wry, hip and practical—there aren’t a lot of textbooks that can make that claim and live up to it while also teaching you about object serialization and network launch protocols.” — Dr. Dan Russell, Director of User Sciences and Experience Research IBM Almaden Research Center (and teaches Artificial Intelligence at Stanford University) “It’s fast, irreverent, fun, and engaging. Be careful—you might actually learn something!” — Ken Arnold, former Senior Engineer at Sun Microsystems Coauthor (with James Gosling, creator of Java), The Java Programming Language “I feel like a thousand pounds of books have just been lifted off of my head.” — Ward Cunningham, inventor of the Wiki and founder of the Hillside Group “Just the right tone for the geeked-out, casual-cool guru coder in all of us. The right reference for practical development strategies—gets my brain going without having to slog through a bunch of tired, stale professor­-speak.” — Travis Kalanick, Founder of Scour and Red Swoosh Member of the MIT TR100 “There are books you buy, books you keep, books you keep on your desk, and thanks to O’Reilly and the Head First crew, there is the penultimate category, Head First books. They’re the ones that are dog-eared, mangled, and carried everywhere. Head First SQL is at the top of my stack. Heck, even the PDF I have for review is tattered and torn.” — Bill Sawyer, ATG Curriculum Manager, Oracle “This book’s admirable clarity, humor and substantial doses of clever make it the sort of book that helps even non-programmers think well about problem-solving.” — Cory Doctorow, co-editor of Boing Boing Author, Down and Out in the Magic Kingdom and Someone Comes to Town, Someone Leaves Town Praise for other Head First books “I received the book yesterday and started to read it... and I couldn’t stop. This is definitely très ‘cool.’ It is fun, but they cover a lot of ground and they are right to the point. I’m really impressed.” — Erich Gamma, IBM Distinguished Engineer, and co-author of Design Patterns “One of the funniest and smartest books on software design I’ve ever read.” — Aaron LaBerge, VP Technology, ESPN.com “What used to be a long trial and error learning process has now been reduced neatly into an engaging paperback.” — Mike Davidson, CEO, Newsvine, Inc. “Elegant design is at the core of every chapter here, each concept conveyed with equal doses of pragmatism and wit.” — Ken Goldstein, Executive Vice President, Disney Online “I ♥ Head First HTML with CSS & XHTML—it teaches you everything you need to learn in a ‘fun coated’ format.” — Sally Applin, UI Designer and Artist “Usually when reading through a book or article on design patterns, I’d have to occasionally stick myself in the eye with something just to make sure I was paying attention. Not with this book. Odd as it may sound, this book makes learning about design patterns fun. “While other books on design patterns are saying ‘Buehler… Buehler… Buehler…’ this book is on the float belting out ‘Shake it up, baby!’” — Eric Wuehler “I literally love this book. In fact, I kissed this book in front of my wife.” — Satish Kumar Other related books from O’Reilly Learning Python Programming Python Python Cookbook Other books in O’Reilly’s Head First series Head First JavaTM Head First Object-Oriented Analysis and Design (OOA&D) Head First HTML with CSS and XHTML Head First Design Patterns Head First Data Analysis Head First Servlets and JSP Head First EJB Head First PMP Head First SQL Head First Software Development Head First JavaScript Head First Ajax Head First Physics Head First Statistics Head First Rails Head First PHP & MySQL Head First Algebra Head First Web Design Head First Programming Wouldn‛t it be dreamy if there were an introductory programming book that didn’t make you wish you were anywhere other than stuck in front of your computer writing code? I guess it’s just a fantasy... Paul Barry David Griffiths Beijing • Cambridge • Farnham • Kln • Sebastopol • Taipei • Tokyo Head First Programming by Paul Barry and David Griffiths Copyright © 2009 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly Media books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (safari.oreilly.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected] Series Creators: Kathy Sierra, Bert Bates Series Editor: Brett D. McLaughlin Editor: Brian Sawyer Cover Designers: Steve Fehler Production Editor: Scott DeLugan Proofreader: Colleen Toporek Indexer: Angela Howard Page Viewers: David: Dawn; Paul: Deirdre, Joseph, Aaron, and Aideen Deirdre (super mom) Printing History: November 2009: First Edition. Dawn (without whom the book would never have been finished) Paul Aideen (future singer/songwriter) The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. The Head First series designations, Head First Programming, and related trade dress are trademarks of O’Reilly Media, Inc. Aaron and Joseph (real-life surfer dudes) Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and the authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. No surfers or snakes were harmed in the making of this book. TM This book uses RepKover™,  a durable and flexible lay-flat binding. ISBN: 978-0-596-80237-0 [C] We dedicate this book to the first person who looked at a computer and then asked the question, “I wonder how I make it do this... ?” And to those that made programming complex enough that people need a book like ours to learn it. David: To Dawn. The smartest person I know. Paul: This one’s dedicated to my father, Jim Barry, who, 25 years ago—when I needed a push—pushed me toward computing. That was a good push. the authors Authors of Head First Programming Paul Barry s David Griffith Paul Barry recently worked out that he has been programming for close to a quarter century, a fact that came as a bit of a shock. In that time, Paul has programmed in lots of different programming languages, lived and worked in two countries on two continents, got married, had three kids (well... his wife Deirdre actually had them, but Paul did play his part), completed a B.Sc. and M.Sc. in Computing, written two other books, written a bunch of technical articles for Linux Journal, and managed not to lose his hair... a situation that, sadly, may in fact be changing. When Paul first saw Head First HTML with CSS & XHTML, he loved it so much he knew immediately that the Head First approach would be a great way to teach programming. He is only too delighted, together with David, to create this book in an attempt to prove his hunch correct. Paul’s day job is working as a lecturer at The Institute of Technology, Carlow in Ireland. As part of the Department of Computing & Networking, Paul gets to spend his day exploring, learning, and teaching cool programming technologies, which is his idea of fun (and further proof that Paul probably needs to get out more). Paul hopes his students think the stuff he teaches is fun, too. viii David Griffiths began programming at age 12, when he saw a documentary on the work of Seymour Papert. At age 15, he wrote an implementation of Papert’s computer language LOGO. After studying Pure Mathematics at University, he began writing code for computers and magazine articles for humans. He’s worked as an agile coach, a developer, and a garage attendant, but not in that order. He can write code in over 10 languages and prose in just one, and when not writing, coding, or coaching, he spends much of his spare time travelling with his lovely wife—and fellow Head First author—Dawn. Before writing Head First Programming, he wrote another book called Head First Rails, which is an excellent read and would make a thoughtful gift for any close friend or family member. You can follow him on Twitter at: table of contents Table of Contents (Summary) Intro xxiii 1 Starting to Code: Finding Your Way 1 2 Textual Data: Every String Has Its Place 37 3 Functions: Let’s Get Organized 77 4 Data Files and Arrays: Sort It Out 113 5 Hashes and Databases: Putting Data in Its Place 145 6 Modular Programming: Keeping Things Straight 177 7 Building a Graphical User Interface: Going All Gooey 215 8 GUIs and Data: Data Entry Widgets 257 81/2 Exceptions and Message Boxes: Get the Message? 293 9 Graphical Interface Elements: Selecting the Right Tool 313 10 Custom Widgets and Classes: With an Object in Mind 349 i Leftovers: The Top Ten Things (We Didn’t Cover) 385 Table of Contents (the real thing) Intro Your brain on Programming.  Here you are trying to learn something, while here your brain is doing you a favor by making sure the learning doesn’t stick. Your brain’s thinking, “Better leave room for more important things, like which wild animals to avoid and whether naked snowboarding is a bad idea.” So how do you trick your brain into thinking that your life depends on knowing Programming? Who is this book for? We know what you’re thinking Metacognition Bend your brain into submission Read me The technical review team Acknowledgments xxiv xxv xxvii xxix xxx xxxii xxxiii ix table of contents 1 starting to code Finding your way Writing programs gives you the power to control your PC. Almost everyone knows how to use a computer, but few people take the next step and learn how to control it. If you use other people’s software, you will always be limited by what other people think you want to do. Write your own programs and the only limit will be your own imagination. Programming will make you more creative, it will make you think more precisely, and it will teach you to analyze and solve problems logically. Do you want to be programmed or be the programmer? <= 5? guess x Programming lets you do more 2 So how do you run your code? 5 Create a new program file 6 Prepare and run your code 7 A program is more than a list of commands 12 Codeville: Your program is like a network of roads 13 Branches are code intersections 14 if/else branches 15 The Python code needs interconnecting paths 20 Python uses indents to connect paths 21 Loops let you run the same piece of code over and over again 28 Python’s while loop 29 Your Programming Toolbox 35 table of contents 2 textual data Every string has its place Imagine trying to communicate without words. All programs process data, and one of the most important types of data is text. In this chapter, you’ll work through the basics of textual data. You’ll automatically search text and get back exactly what you’re looking for. Along the way, you’ll pick up key programming concepts such as methods and how you can use them to bend your data to your will. And finally, you’ll instantly power up your programs with the help of library code. Your new gig at Starbuzz Coffee 38 Here’s the current Starbuzz code 39 The cost is embedded in the HTML 41 A string is a series of characters 41 Find characters inside the text 42 But how do you get at more than one character? 43 The String Exposed 48 Beans’R’Us is rewarding loyal customers 50 Searching is complex 52 Python data is smart 54 Strings and numbers are different 64 The program has overloaded the Beans’R’Us Server 67 Time... if only you had more of it 68 You’re already using library code 69 Order is restored 74 Your Programming Toolbox 75 xi table of contents 3 functions Let’s get organized As programs grow, the code often becomes more complex. And complex code can be hard to read, and even harder to maintain. One way of managing this complexity is to create functions. Functions are snippets of code that you use as needed from within your program. They allow you to separate out common actions, and this means that they make your code easier to read and easier to maintain. In this chapter, you’ll discover how a little function knowledge can make your coding life a whole lot easier. xii Starbuzz is out of beans! 78 What does the new program need to do? 79 Don’t duplicate your code... 81 Reuse code with functions 82 Always get things in the right order 84 Return data with the return command 87 Use the Web, Luke 93 The function always sends the same message 94 Use parameters to avoid duplicating functions 96 Someone decided to mess with your code 102 The rest of the program can’t see the password variable 104 When you call a function, the computer creates a fresh list of variables 105 When you leave a function, its variables get thrown away 106 Starbuzz is fully stocked! 110 Your Programming Toolbox 111 table of contents 4 data files and arrays Sort it out As your programs develop, so do your data handling needs. And when you have lots of data to work with, using an individual variable for each piece of data gets really old, really quickly. So programmers employ some rather awesome containers (known as data structures) to help them work with lots of data. More times than not, all that data comes from a file stored on a hard disk. So, how can you work with data in your files? Turns out it’s a breeze. Hey, dude, it’s Chapter 4... time for a break - let’s catch some waves. Surf ’s up in Codeville 114 Find the highest score in the results file 115 Iterate through the file with the open, for, close pattern 116 The file contains more than numbers... 120 Split each line as you read it 121 The split() method cuts the string 122 But you need more than one top score 126 Keeping track of 3 scores makes the code more complex 127 An ordered list makes code much simpler 128 Sorting is easier in memory 129 You can’t use a separate variable for each line of data 130 An array lets you manage a whole train of data 131 Python gives you arrays with lists 132 Sort the array before displaying the results 136 Sort the scores from highest to lowest 139 And the winner is...? 142 You somehow forgot the surfer names 143 Your Programming Toolbox 144 xiii table of contents 5 hashes and databases Putting data in its place Arrays aren’t the only show in town when it comes to data. Programming languages come with other data-arranging goodies too, and our chosen tool, Python, is no exception. In this chapter, you’ll associate values with names using a data structure commonly called the hash (better known as dictionary to Python-folk). And when it comes to working with stored data, you’ll read data from an external database system as well as from regular text-based files. All the world’s awash with data, so turn the page and start applying your everexpanding programming skills to some cool data-processing tasks. xiv Who won the surfing contest? 146 Associate the name with the score 150 Associate a key with a value using a hash 153 Iterate hash data with for 154 The data isn’t sorted 158 When data gets complex 160 Return a data structure from a function 164 Here’s your new board! 168 Meanwhile, down at the studio... 169 The code remains the same; it’s the function that changes 170 TVN’s data is on the money! 174 Your Programming Toolbox 175 table of contents 6 modular programming Keeping things straight The code that you write will make its way into many programs. And, although sharing is good, you need to be careful. One programmer might take your code and use it in an unexpected way, while another might change it without even letting you know. You might want to use one function in all your programs and, over time, that function’s code might change to suit your needs. Smart programmers take advantage of modular programming techniques to keep their workload manageable. Head First Health Club is upgrading some systems 178 The program needs to create a transaction file 179 Use strings to format strings 180 The Format String Exposed 186 A late night email ruins your day 187 $50,000... for a donut?! 188 Only the sales from your program were rejected 189 The new bank uses a new format 190 Your coffee bar program still uses the old format 191 Don’t just update your copy 192 So how do you create a module...? 193 The transaction file is working great, too 199 The health club has a new requirement 200 The Starbuzz code 205 The two discount functions have the same name 206 Fully Qualified Names (FQNs) prevent your programs from getting confused 207 The discounts get the customers flooding in 213 Your Programming Toolbox 214 xv table of contents 7 building a graphical user interface Going all gooey Your coding skills are great and getting better all the time. It’s just a shame your programs are not that nice to look at. Displaying prompts and messages on a text-based console is all well and good, but it’s so 1970s, isn’t it? Add some green text on a black background and your retro look will be complete. There has to be a better way to communicate with your users than the console, and there is: using a graphical user interface or GUI (pronounced “gooey”). Sounds cool, but complex, and it can be. But, don’t fret; learning a trick or two will have your code all graphical in no time. Let’s get all gooey (sorry, GUI) in this chapter. xvi Head First TVN now produces game shows 216 pygame is cross platform 220 pygame Exposed 229 0... 2... 1... 9... blast off ! 230 tkinter gives you the event loop for free 234 tkinter is packed with options 235 Th...
View Full Document

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture