logo资料库

Python.Crash.Course.A.Hands-On.Project-Based.Introduction.to.Pro....pdf

第1页 / 共562页
第2页 / 共562页
第3页 / 共562页
第4页 / 共562页
第5页 / 共562页
第6页 / 共562页
第7页 / 共562页
第8页 / 共562页
资料共562页,剩余部分请下载后查看
About the Author
About the Technical Reviewer
Brief Contents
Contents in Detail
Acknowledgments
Introduction
Who Is This Book For?
What Can You Expect to Learn?
Why Python?
Part I: Basics
Chapter 1: Getting Started
Setting Up Your Programming Environment
Python 2 and Python 3
Running Snippets of Python Code
Hello World!
Python on Different Operating Systems
Python on Linux
Python on OS X
Python on Windows
Troubleshooting Installation Issues
Running Python Programs from a Terminal
On Linux and OS X
On Windows
Exercise 1-1: python.org
Exercise 1-2: Hello World Typos
Exercsie 1-3: Infinite Skills
Summary
Chapter 2: Variables and Simple Data Types
What Really Happens When You Run hello_world.py
Variables
Naming and Using Variables
Avoiding Name Errors When Using Variables
Exercise 2-1: Simple Message
Exercise 2-2: Simple Messages
Strings
Changing Case in a String with Methods
Combining or Concatenating Strings
Adding Whitespace to Strings with Tabs or Newlines
Stripping Whitespace
Avoiding Syntax Errors with Strings
Printing in Python 2
Exercise 2-3: Personal Message
Exercise 2-4: Name Cases
Exercise 2-5: Famous Quotes
Exercise 2-6: Famous Quote 2
Exercise 2-7: Stripping Names
Numbers
Integers
Floats
Avoiding Type Errors with the str() Function
Integers in Python 2
Exercise 2-8: Number Eight
Exercise 2-9: Favorite Number
Comments
How Do You Write Comments?
What Kind of Comments Should You Write?
Exercise 2-10: Adding Comments
The Zen of Python
Exercise 2-11: Zen of Python
Summary
Chapter 3: Introducing Lists
What Is a List?
Accessing Elements in a List
Index Positions Start at 0, Not 1
Using Individual Values from a List
Exercise 3-1: Names
Exercise 3-2: Greetings
Exercise 3-3: Your Own List
Changing, Adding, and Removing Elements
Modifying Elements in a List
Adding Elements to a List
Removing Elements from a List
Exercise 3-4: Guest List
Exercise 3-5: Changing Guest List
Exercise 3-6: More Guests
Exercsie 3-7: Shrinking Guest List
Organizing a List
Sorting a List Permanently with the sort() Method
Sorting a List Temporarily with the sorted() Function
Printing a List in Reverse Order
Finding the Length of a List
Exercise 3-8: Seeing the World
Exercise 3-9: Dinner Guests
Exercise 3-10: Every Function
Avoiding Index Errors When Working with Lists
Exercise 3-11: Intentional Error
Summary
Chapter 4: Working with Lists
Looping Through an Entire List
A Closer Look at Looping
Doing More Work Within a for Loop
Doing Something After a for Loop
Avoiding Indentation Errors
Forgetting to Indent
Forgetting to Indent Additional Lines
Indenting Unnecessarily
Indenting Unnecessarily After the Loop
Forgetting the Colon
Exercise 4-1: Pizzas
Exercise 4-2: Animals
Making Numerical Lists
Using the range() Function
Using range() to Make a List of Numbers
Simple Statistics with a List of Numbers
List Comprehensions
Exercise 4-3: Counting to Twenty
Exercise 4-4: One Million
Exercise 4-5: Summing a Million
Exercise 4-6: Odd Numbers
Exercise 4-7: Threes
Exercise 4-8: Cubes
Exercise 4-9: Cube Comprehension
Working with Part of a List
Slicing a List
Looping Through a Slice
Copying a List
Exercise 4-10: Slices
Exercise 4-11: My Pizzas, Your Pizzas
Exercise 4-12: More Loops
Tuples
Defining a Tuple
Looping Through All Values in a Tuple
Writing over a Tuple
Exercise 4-13: Buffet
Styling Your Code
The Style Guide
Indentation
Line Length
Blank Lines
Other Style Guidelines
Exercise 4-14: PEP 8
Exercise 4-15: Code Review
Summary
Chapter 5: if Statements
A Simple Example
Conditional Tests
Checking for Equality
Ignoring Case When Checking for Equality
Checking for Inequality
Numerical Comparisons
Checking Multiple Conditions
Checking Whether a Value Is in a List
Checking Whether a Value Is Not in a List
Boolean Expressions
Exercise 5-1: Conditional Tests
Exercise 5-2: More Conditional Tests
if Statements
Simple if Statements
if-else Statements
The if-elif-else Chain
Using Multiple elif Blocks
Omitting the else Block
Testing Multiple Conditions
Exercise 5-3: Alien Colors #1
Exercise 5-4: Alien Colors #2
Exercise 5-5: Alien Colors #3
Exercise 5-6: Stages of Life
Exercise 5-7: Favorite Fruit
Using if Statements with Lists
Checking for Special Items
Checking That a List Is Not Empty
Using Multiple Lists
Exercise 5-8: Hello Admin
Exercise 5-9: No Users
Exercise 5-10: Checking Usernames
Exercise 5-11: Ordinal Numbers
Styling Your if Statements
Exercise 5-12: Styling if statements
Exercise 5-13: Your Ideas
Summary
Chapter 6: Dictionaries
A Simple Dictionary
Working with Dictionaries
Accessing Values in a Dictionary
Adding New Key-Value Pairs
Starting with an Empty Dictionary
Modifying Values in a Dictionary
Removing Key-Value Pairs
A Dictionary of Similar Objects
Exercise 6-1: Person
Exercise 6-2: Favorite Numbers
Exercise 6-3: Glossary
Looping Through a Dictionary
Looping Through All Key-Value Pairs
Looping Through All the Keys in a Dictionary
Looping Through a Dictionary's Keys in Order
Looping Through All Values in a Dictionary
Exercise 6-4: Glossary 2
Exercise 6-5: Rivers
Exercise 6-6: Polling
Nesting
A List of Dictionaries
A List in a Dictionary
A Dictionary in a Dictionary
Exercise 6-7: People
Exercise 6-8: Pets
Exercise 6-9: Favorite Places
Exercise 6-10: Favorite Numbers
Exercise 6-11: Cities
Exercise 6-12: Extensions
Summary
Chapter 7: User Input and while Loops
How the input() Function Works
Writing Clear Prompts
Using int() to Accept Numerical Input
The Modulo Operator
Accepting Input in Python 2.7
Exercise 7-1: Rental Car
Exercise 7-2: Restaurant Seating
Exercise 7-3: Multiples of Ten
Introducing while Loops
The while Loop in Action
Letting the User Choose When to Quit
Using a Flag
Using break to Exit a Loop
Using continue in a Loop
Avoiding Infinite Loops
Exercise 7-4: Pizza Toppings
Exercise 7-5: Movie Tickets
Exercise 7-6: Three Exits
Exercise 7-7: Infinity
Using a while Loop with Lists and Dictionaries
Moving Items from One List to Another
Removing All Instances of Specific Values from a List
Filing a Dictionary with User Input
Exercise 7-8: Deli
Exercise 7-9: No Pastrami
Exercise 7-10: Dream Vacation
Summary
Chapter 8: Functions
Defining a Function
Passing Information to a Function
Arguments and Parameters
Exercise 8-1: Message
Exercise 8-2: Favorite Book
Passing Arguments
Positional Arguments
Keyword Arguments
Default Values
Equivalent Function Calls
Avoiding Argument Errors
Exercise 8-3: T-Shirt
Exercise 8-4: Large Shirts
Exercise 8-5: Cities
Return Values
Returning a Simple Value
Making an Argument Optional
Returning a Dictionary
Using a Function with a while Loop
Exercise 8-6: City Names
Exercise 8-7: Album
Exercise 8-8: User Albums
Passing a List
Modifying a List in a Function
Preventing a Function from Modifying a List
Exercise 8-9: Magicians
Exercise 8-10: Great Magicians
Exercise 8-11: Unchanged Magicians
Passing an Arbitrary Number of Arguments
Mixing Positional and Arbitrary Arguments
Using Arbitrary Keyword Arguments
Exercise 8-12: Sandwiches
Exercise 8-13: User Profile
Exercise 8-14: Cars
Storing Your Functions in Modules
Importing an Entire Module
Importing Specific Functions
Using as to Give a Function an Alias
Using as to Give a Module an Alias
Importing All Functions in a Module
Styling Functions
Exercise 8-15: Printing Models
Exercise 8-16: Imports
Exercise 8-17: Styling Functions
Summary
Chapter 9: Classes
Creating and Using a Class
Creating the Dog Class
Making an Instance from a Class
Exercise 9-1: Restaurant
Exercise 9-2: Three Restaurants
Exercise 9-3: Users
Working with Classes and Instances
The Car Class
Setting a Default Value for an Attribute
Modifying Attribute Values
Exercise 9-4: Number Served
Exercise 9-5: Login Attempts
Inheritance
The __init__() method for a Child Class
Inheritance in Python 2.7
Defining Attributes and Methods for the Child Class
Overriding Methods from the Parent Class
Instances as Attributes
Modeling Real-World Objects
Exercise 9-6: Ice Cream Stand
Exercise 9-7: Admin
Exercise 9-8: Privileges
Exercise 9-9: Battery Upgrade
Importing Classes
Importing a Single Class
Storing Multiple Classes in a Module
Importing Multiple Classes from a Module
Importing an Entire Module
Importing All Classes from a Module
Importing a Module into a Module
Finding Your Own Workflow
Exercise 9-10: Imported Restaurant
Exercise 9-11: Imported Admin
Exercise 9-12: Multiple Modules
The Python Standard Library
Exercise 9-13: OrderedDict Rewrite
Exercise 9-14: Dice
Exercise 9-15: Python Module of the Week
Styling Classes
Summary
Chapter 10: Files and Exceptions
Reading from a File
Reading an Entire File
File Paths
Reading Line by Line
Making a List of Lines from a File
Working with a File's Contents
Large Files: One Million Digits
Is Your Birthday Contained in Pi?
Exercise 10-1: Learning Python
Exercise 10-2: Learning C
Writing to a File
Writing to an Empty File
Writing Multiple Lines
Appending to a File
Exercise 10-3: Guest
Exercise 10-4: Guest Book
Exercise 10-5: Programming Poll
Exceptions
Handling the ZeroDivisionError Exception
Using try-except Blocks
Using Exceptions to Prevent Crashes
The else Block
Handling the FileNotFoundError Exception
Analyzing Text
Working with Multiple Files
Failing Silently
Deciding Which Errors to Report
Exercise 10-6: Addition
Exercise 10-7: Addition Calculator
Exercise 10-8: Cats and Dogs
Exercise 10-9: Silent Cats and Dogs
Exercise 10-10: Common Words
Storing Data
Using json.dump() and json.load()
Saving and Reading User-Generated Data
Refactoring
Exercise 10-11: Favorite Number
Exercise 10-12: Favorite Number Revisited
Exercise 10-13: Verify User
Summary
Chapter 11: Testing Your Code
Testing a Function
Unit Tests and Test Cases
A Passing Test
A Failing Test
Responding to a Failing Test
Adding New Tests
Exercise 11-1: City, Country
Exercise 11-2: Population
Testing a Class
A Variety of Assert Methods
A Class to Test
Testing the AnonymousSurvey Class
The setUp() Method
Exercise 11-3: Employee
Summary
Part II: Projects
Project 1: Alien Invasion
Chapter 12: A Ship that Fires Bullets
Planning Your Project
Installing Pygame
Installing Python Packages with pip
Installing Pygame on Linux
Installing Pygame on OS X
Installing Pygame on Windows
Starting the Game Project
Creating a Pygame Window and Responding to User Input
Setting the Background Color
Creating a Settings Class
Adding the Ship Image
Creating the Ship Class
Drawing the Ship to the Screen
Refactoring: the game_functions Module
The check_events() Function
The update_screen() Function
Exercise 12-1: Blue Sky
Exercise 12-2: Game Character
Piloting the Ship
Responding to a Keypress
Allowing Continuous Movement
Moving Both Left and Right
Adjusting the Ship's Speed
Limiting the Ship's Range
Refactoring check_events()
A Quick Recap
alien_invasion.py
settings.py
game_functions.py
ship.py
Exercise 12-3: Rocket
Exercise 12-4: Keys
Shooting Bullets
Adding the Bullet Settings
Creating the Bullet Class
Storing Bullets in a Group
Firing Bullets
Deleting Old Bullets
Limiting the Number of Bullets
Creating the update_bullets() Function
Creating the fire_bullet() Function
Exercise 12-5: Sideways Shooter
Chapter 13: Aliens!
Reviewing Your Project
Creating the First Alien
Creating the Alien Class
Creating an Instance of the Alien
Making the Alien Appear Onscreen
Building the Alien Fleet
Determining How Many Aliens Fit in a Row
Creating Rows of Aliens
Creating the Fleet
Refactoring create_fleet()
Adding Rows
Exercise 13-1: Stars
Exercise 13-2: Better Stars
Making the Fleet Move
Moving the Aliens Right
Creating Settings for Fleet Direction
Checking to See Whether an Alien Has Hit the Edge
Dropping the Fleet and Changing Direction
Exercise 13-3: Raindrops
Exercise 13-4: Steady Rain
Shooting Aliens
Detecting Bullet Collisions
Making Larger Bullets for Testing
Repopulating the Fleet
Speeding Up the Bullets
Refactoring update_bullets()
Exercise 13-5: Catch
Ending the Game
Detecting Alien-Ship Collisions
Responding to Alien-Ship Collisions
Aliens that Reach the Bottom of the Screen
Game Over!
Identifying When Parts of the Game Should Run
Exercise 13-6: Game Over
Summary
Chapter 14: Scoring
Adding the Play Button
Creating a Button Class
Drawing the Button to the Screen
Starting the Game
Resetting the Game
Deactivating the Play Button
Hiding the Mouse Cursor
Exercise 14-1: Press P to Play
Exercise 14-2: Target Practice
Leveling Up
Modifying the Speed Settings
Resetting the Speed
Exercise 14-3: Challenging Target Practice
Scoring
Displaying the Score
Making a Scoreboard
Updating the Score as Aliens Are Shot Down
Making Sure to Score All Hits
Increasing Point Values
Rounding the Score
High Scores
Displaying the Level
Displaying the Number of Ships
Exercise 14-4: All-Time High Score
Exercise 14-5: Refactoring
Exercise 14-6: Expanding Alien Invasion
Summary
Project 2: Data Visualization
Chapter 15: Generating Data
Installing matplotlib
On Linux
On OS X
On Windows
Testing matplotlib
The matplotlib Gallery
Plotting a Simple Line Graph
Changing the Label Type and Graph Thickness
Correcting the Plot
Plotting and Styling Individual Points with scatter()
Plotting a Series of Points with scatter()
Calculating Data Automatically
Removing Outlines from Data Points
Defining Custom Colors
Using a Colormap
Saving Your Plots Automatically
Exercise 15-1: Cubes
Exercise 15-2: Colored Cubes
Random Walks
Creating the RandomWalk() Class
Choosing Directions
Plotting the Random Walk
Generating Multiple Random Walks
Styling the Walk
Coloring the Points
Plotting the Starting and Ending Points
Cleaning Up the Axes
Adding Plot Points
Altering the Size to Fill the Screen
Exercise 15-3: Molecular Motion
Exercise 15-4: Modified Random Walks
Exercise 15-5: Refactoring
Rolling Dice with Pygal
Installing Pygal
The Pygal Gallery
Creating the Die Class
Rolling the Die
Analyzing the Results
Making a Histogram
Rolling Two Dice
Rolling Dice of Different Sizes
Exercise 15-6: Automatic Labels
Exercise 15-7: Two D8s
Exercise 15-8: Three Dice
Exercise 15-9: Multiplication
Exercise 15-10: Practicing with Both Libraries
Summary
Chapter 16: Downloading Data
The CSV File Format
Parsing the CSV File Headers
Printing the Headers and Their Positions
Extracting and Reading Data
Plotting Data in a Temperature Chart
The datetime Module
Plotting Dates
Plotting a Longer Timeframe
Plotting a Second Data Series
Shading an Area in the Chart
Error-Checking
Exercise 16-1: San Francisco
Exercise 16-2: Sitka-Death Valley Comparison
Exercise 16-3: Rainfall
Exercise 16-4: Explore
Mapping Global Data Sets: JSON Format
Downloading World Population Data
Extracting Relevant Data
Converting Strings into Numerical Values
Obtaining Two-Digit Country Codes
Building a World Map
Plotting Numerical Data on a World Map
Plotting a Complete Population Map
Grouping Countries by Population
Styling World Maps in Pygal
Lightening the Color Theme
Exercise 16-5: All Countries
Exercise 16-6: Gross Domestic Product
Exercise 16-7: Choose Your Own Data
Exercise 16-8: Testing the country_codes Module
Summary
Chapter 17: Working with APIs
Using a Web API
Git and GitHub
Requesting Data Using an API Call
Installing Requests
Processing an API Response
Working with the Response Dictionary
Summarizing the Top Repositories
Monitoring API Rate Limits
Visualizing Repositories Using Pygal
Refining Pygal Charts
Adding Custom Tooltips
Plotting the Data
Adding Clickable Links to Our Graph
The Hacker News API
Exercise 17-1: Other Languages
Exercise 17-2: Active Discussions
Exercise 17-3: Testing python_repos.py
Summary
Project 3: Web Applications
Chapter 18: Getting Started with Django
Setting Up a Project
Writing a Spec
Creating a Virtual Environment
Installing virtualenv
Activating the Virtual Environment
Installing Django
Creating a Project in Django
Creating the Database
Viewing the Project
Exercise 18-1: New Projects
Starting an App
Defining Models
Activating Models
The Django Admin Site
Defining the Entry Model
Migrating the Entry Model
Registering Entry with the Admin Site
The Django Shell
Exercise 18-2: Short Entries
Exercise 18-3: The Django API
Exercise 18-4: Pizzeria
Making Pages: The Learning Log Home Page
Mapping an URL
Writing a View
Writing a Template
Exercise 18-5: Meal Planner
Exercise 18-6: Pizzeria Home Page
Building Additional Pages
Template Inheritance
The Topics Page
Individual Topic Pages
Exercise 18-7: Template Documentation
Exercise 18-8: Pizzeria Pages
Summary
Chapter 19: User Accounts
Allowing Users to Enter Data
Adding New Topics
Adding New Entries
Editing Entries
Exercise 19-1: Blog
Setting Up User Accounts
The users App
The Login Page
Logging Out
The Registration Page
Exercise 19-2: Blog Accounts
Allowing Users to Own Their Data
Restricting Access with @login_required
Connecting Data to Certain Users
Restricting Topics Access to Appropriate Users
Protecting a User's Topics
Protecting the edit_entry Page
Associating New Topics with the Current User
Exercise 19-3: Refactoring
Exercise 19-4: Protecting new_entry
Exercise 19-5: Protected Blog
Summary
Chapter 20: Styling and Deploying an App
Styling Learning Log
The django-bootstrap3 App
Using Bootstrap to Style Learning Log
Modifying base.html
Styling the Home Page Using a Jumbotron
Styling the Login Page
Styling the new_topic Page
Styling the Topics Page
Styling the Entries on the Topic Page
Exercise 20-1: Other Forms
Exercise 20-2: Stylish Blog
Deploying Learning Log
Making a Heroku Account
Installing the Heroku Toolbelt
Installing Required Packages
Creating a Packages List with a requirements.txt File
Specifying the Python Runtime
Modifying settings.py for Heroku
Making a Procfile to Start Processes
Modifying wsgi.py for Heroku
Making a Directory for Static Files
Using the gunicorn Server Locally
Using Git to Track the Project's Files
Pushing to Heroku
Setting Up the Database on Heroku
Refining the Heroku Deployment
Securing the Live Project
Committing and Pushing Changes
Creating Custom Error Pages
Ongoing Development
The SECRET_KEY Setting
Deleting a Project on Heroku
Exercise 20-3: Live Blog
Exercise 20-4: More 404s
Exercise 20-5: Extended Learning Log
Summary
Afterword
Appendix A: Installing Python
Python on Linux
Finding the Installed Version
Installing Python 3 on Linux
Python on OS X
Finding the Installed Version
Using Homebrew to Install Python 3
Python on Windows
Installing Python 3 on Windows
Finding the Python Interpreter
Adding Python to Your Path Variable
Python Keywords and Built-in Functions
Python Keywords
Python Built-in Functions
Appendix B: Text Editors
Geany
Installing Geany on Linux
Installing Geany on Windows
Running Python Programs in Geany
Customizing Geany Settings
Sublime Text
Installing Sublime Text on OS X
Installing Sublime Text on Linux
Installing Sublime Text on Windows
Running Python Programs in Sublime Text
Configuring Sublime Text
Customizing Sublime Text Settings
IDLE
Installing IDLE on Linux
Installing IDLE on OS X
Installing IDLE on Windows
Customizing IDLE Settings
Emacs and vim
Appendix C: Getting Help
First Steps
Try It Again
Take a Break
Refer to This Book's Resources
Searching Online
Stack Overflow
The Official Python Documentation
Official Library Documentation
r/learnpython
Blog Posts
IRC (Internet Relay Chat)
Make an IRC Account
Channels to Join
IRC Culture
Appendix D: Using Git for Version Control
Installing Git
Installing Git on Linux
Installing Git on OS X
Installing Git on Windows
Configuring Git
Making a Project
Ignoring Files
Initializing a Repository
Checking the Status
Adding Files to the Repository
Making a Commit
Checking the Log
The Second Commit
Reverting a Change
Checking Out Previous Commits
Deleting the Repository
Index
Resources
L E A R N P Y T H O N— L E A R N P Y T H O N— F A S T ! F A S T ! Python Crash Course is a fast-paced, thorough intro- duction to programming with Python that will have you writing programs, solving problems, and making things that work in no time. In the first half of the book, you’ll learn about basic programming concepts, such as lists, dictionaries, classes, and loops, and practice writing clean and readable code with exercises for each topic. You’ll also learn how to make your programs interactive and how to test your code safely before adding it to a project. In the second half of the book, you’ll put your new knowledge into practice with three substantial projects: a Space Invaders–inspired arcade game, data visualizations with Python’s super-handy libraries, and a simple web app you can deploy online. As you work through Python Crash Course, you’ll learn how to: • Use powerful Python libraries and tools, including matplotlib, NumPy, and Pygal • Make 2D games that respond to keypresses and mouse clicks, and that grow more difficult as the game progresses • Work with data to generate interactive visualizations • Create and customize simple web apps and deploy them safely online • Deal with mistakes and errors so you can solve your own programming problems If you’ve been thinking seriously about digging into programming, Python Crash Course will get you up to speed and have you writing real programs fast. Why wait any longer? Start your engines and code! A B O U T T H E A U T H O R Eric Matthes is a high school science and math teacher living in Alaska, where he teaches an introductory Python course. He has been writing programs since he was five years old. C O V E R S P Y T H O N 2 A N D 3 TH E FI NE ST I N G E EK E NTE RTA I N M E NT ™ www.nostarch.com “I LI E FLAT.” This book uses RepKover —a durable binding that won’t snap shut $39.95 ($45.95 CDN) S H E L V E I N : P Y T H O N P R O G R A M M N G I L A N G U A G E S / PY THON PY THON CR ASH COURSE CR ASH COURSE A H A N D S - O N , P R O J E C T - B A S E D I N T R O D U C T I O N T O P R O G R A M M I N G E R I C M A T T H E S P P Y Y T T H H O O N N C C R R A A S S H H C C O O U U R R S S E E M A T T H E S
Python Crash Course
Python Crash Course a hands-on, Project-Based Introduction to Programming by Eric Matthes San Francisco
Python Crash Course. Copyright © 2016 by Eric Matthes. All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. First printing 19 18 17 16 15 1 2 3 4 5 6 7 8 9 ISBN-10: 1-59327-603-6 ISBN-13: 978-1-59327-603-4 Publisher: William Pollock Production Editor: Riley Hoffman Cover Illustration: Josh Ellingson Interior Design: Octopod Studios Developmental Editors: William Pollock, Liz Chadwick, and Leslie Shen Technical Reviewer: Kenneth Love Copyeditor: Anne Marie Walker Compositor: Riley Hoffman Proofreader: James Fraleigh For information on distribution, translations, or bulk sales, please contact No Starch Press, Inc. directly: No Starch Press, Inc. 245 8th Street, San Francisco, CA 94103 phone: 415.863.9900; info@nostarch.com www.nostarch.com Library of Congress Cataloging-in-Publication Data Matthes, Eric, 1972- Python crash course : a hands-on, project-based introduction to programming / by Eric Matthes. pages cm Includes index. Summary: "A project-based introduction to programming in Python, with exercises. Covers general programming concepts, Python fundamentals, and problem solving. Includes three projects - how to create a simple video game, use data visualization techniques to make graphs and charts, and build an interactive web application"-- Provided by publisher. ISBN 978-1-59327-603-4 -- ISBN 1-59327-603-6 1. Python (Computer program language) I. Title. QA76.73.P98M38 2015 005.13'3--dc23 2015018135 No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc. Other product and company names mentioned herein may be the trademarks of their respective owners. Rather than use a trademark symbol with every occurrence of a trademarked name, we are using the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The information in this book is distributed on an “As Is” basis, without warranty. While every precaution has been taken in the preparation of this work, neither the author nor No Starch Press, Inc. shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in it.
about the author Eric Matthes is a high school science and math teacher living in Alaska, where he teaches an introductory Python course. He has been writing programs since he was five years old. Eric currently focuses on writing soft- ware that addresses inefficiencies in education and brings the benefits of open source software to the field of education. In his spare time he enjoys climbing mountains and spending time with his family. about the technical reviewer Kenneth Love has been a Python programmer and teacher for many years. He has given talks and tutorials at conferences, done professional train- ings, been a Python and Django freelancer, and now teaches for an online education company. Kenneth is also the co-creator of the django-braces package, which provides several handy mixins for Django’s class-based views. You can keep up with him on Twitter at @kennethlove.
For my father, who always made time to answer my questions about programming, and for Ever, who is just beginning to ask me his questions
分享到:
收藏