| |
| |
Acknowledgments | |
| |
| |
Preface | |
| |
| |
| |
What's Programming? | |
| |
| |
| |
Programs and Programming | |
| |
| |
| |
What's a Programming Language? | |
| |
| |
| |
What's a Bug? | |
| |
| |
| |
The Difference Between Brackets, Braces, and Parentheses | |
| |
| |
| |
Installing Python | |
| |
| |
| |
Hello, Python | |
| |
| |
| |
How Does a Computer Run a Python Program? | |
| |
| |
| |
Expressions and Values: Arithmetic in Python | |
| |
| |
| |
What Is a Type? | |
| |
| |
| |
Variables and Computer Memory: Remembering Values | |
| |
| |
| |
How Python Tells You Something Went Wrong | |
| |
| |
| |
A Single Statement That Spans Multiple Lines | |
| |
| |
| |
Describing Code | |
| |
| |
| |
Making Code Readable | |
| |
| |
| |
The Object of This Chapter | |
| |
| |
| |
Exercises | |
| |
| |
| |
Designing and Using Functions | |
| |
| |
| |
Functions That Python Provides | |
| |
| |
| |
Memory Addresses: How Python Keeps Track of Values | |
| |
| |
| |
Defining Our Own Functions | |
| |
| |
| |
Using Local Variables for Temporary Storage | |
| |
| |
| |
Tracing Function Calls in the Memory Model | |
| |
| |
| |
Designing New Functions: A Recipe | |
| |
| |
| |
Writing and Running a Program | |
| |
| |
| |
Omitting a Return Statement: None | |
| |
| |
| |
Dealing with Situations That Your Code Doesn't Handle | |
| |
| |
| |
What Did You Call That? | |
| |
| |
| |
Exercises | |
| |
| |
| |
Working with Text | |
| |
| |
| |
Creating Strings of Characters | |
| |
| |
| |
Using Special Characters in Strings | |
| |
| |
| |
Creating a Multiline String | |
| |
| |
| |
Printing Information | |
| |
| |
| |
Getting Information from the Keyboard | |
| |
| |
| |
Quotes About Strings in This Text | |
| |
| |
| |
Exercises | |
| |
| |
| |
Making Choices | |
| |
| |
| |
A Boolean Type | |
| |
| |
| |
Choosing Which Statements to Execute | |
| |
| |
| |
Nested If Statements | |
| |
| |
| |
Remembering the Results of a Boolean Expression Evaluation | |
| |
| |
| |
You Learned About Booleans: True or False? | |
| |
| |
| |
Exercises | |
| |
| |
| |
A Modular Approach to Program Organization | |
| |
| |
| |
Importing Modules | |
| |
| |
| |
Defining Your Own Modules | |
| |
| |
| |
Testing Your Code Semiautomatically | |
| |
| |
| |
Tips for Grouping Your Functions | |
| |
| |
| |
Organizing Our Thoughts | |
| |
| |
| |
Exercises | |
| |
| |
| |
Using Methods | |
| |
| |
| |
Modules, Classes, and Methods | |
| |
| |
| |
Calling Methods the Object-Oriented Way | |
| |
| |
| |
Exploring String Methods | |
| |
| |
| |
What Are Those Underscores? | |
| |
| |
| |
A Methodical Review | |
| |
| |
| |
Exercises | |
| |
| |
| |
Storing Collections of Data Using Lists | |
| |
| |
| |
Storing and Accessing Data in Lists | |
| |
| |
| |
Modifying Lists | |
| |
| |
| |
Operations on Lists | |
| |
| |
| |
Slicing Lists | |
| |
| |
| |
Aliasing: What's in a Name? | |
| |
| |
| |
List Methods | |
| |
| |
| |
Working with a List of Lists | |
| |
| |
| |
A Summary List | |
| |
| |
| |
Exercises | |
| |
| |
| |
Repeating Code Using Loops | |
| |
| |
| |
Processing Items in a List | |
| |
| |
| |
Processing Characters in Strings | |
| |
| |
| |
Looping Over a Range of Numbers | |
| |
| |
| |
Processing Lists Using Indices | |
| |
| |
| |
Nesting Loops in Loops | |
| |
| |
| |
Looping Until a Condition Is Reached | |
| |
| |
| |
Repetition Based on User Input | |
| |
| |
| |
Controlling Loops Using Break and Continue | |
| |
| |
| |
Repeating What You've Learned | |
| |
| |
| |
Exercises | |
| |
| |
| |
Reading and Writing Files | |
| |
| |
| |
What Kinds of Files Are There? | |
| |
| |
| |
Opening a File | |
| |
| |
| |
Techniques for Reading Files | |
| |
| |
| |
Files over the Internet | |
| |
| |
| |
Writing Files | |
| |
| |
| |
Writing Algorithms That Use the File-Reading Techniques | |
| |
| |
| |
Multiline Records | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Notes to File Away | |
| |
| |
| |
Exercises | |
| |
| |
| |
Storing Data Using Other Collection Types | |
| |
| |
| |
Storing Data Using Sets | |
| |
| |
| |
Storing Data Using Tuples | |
| |
| |
| |
Storing Data Using Dictionaries | |
| |
| |
| |
Inverting a Dictionary | |
| |
| |
| |
Using the In Operator on Tuples, Sets, and Dictionaries | |
| |
| |
| |
Comparing Collections | |
| |
| |
| |
A Collection of New Information | |
| |
| |
| |
Exercises | |
| |
| |
| |
Designing Algorithms | |
| |
| |
| |
Searching for the Smallest Values | |
| |
| |
| |
Timing the Functions | |
| |
| |
| |
At a Minimum, You Saw This | |
| |
| |
| |
Exercises | |
| |
| |
| |
Searching and Sorting | |
| |
| |
| |
Searching a List | |
| |
| |
| |
Binary Search | |
| |
| |
| |
Sorting | |
| |
| |
| |
More Efficient Sorting Algorithms | |
| |
| |
| |
Mergesort: A Faster Sorting Algorithm | |
| |
| |
| |
Sorting Out What You Learned | |
| |
| |
| |
Exercises | |
| |
| |
| |
Object-Oriented Programming | |
| |
| |
| |
Understanding a Problem Domain | |
| |
| |
| |
Function "Isinstance," Class Object, and Class Book | |
| |
| |
| |
Writing a Method in Class Book | |
| |
| |
| |
Plugging into Python Syntax: More Special Methods | |
| |
| |
| |
A Little Bit of OO Theory | |
| |
| |
| |
A Case Study: Molecules, Atoms, and PDB Files | |
| |
| |
| |
Classifying What You've Learned | |
| |
| |
| |
Exercises | |
| |
| |
| |
Testing and Debugging | |
| |
| |
| |
Why Do You Need to Test? | |
| |
| |
| |
Case Study: Testing above_freezing | |
| |
| |
| |
Case Study: Testing running_sum | |
| |
| |
| |
Choosing Test Cases | |
| |
| |
| |
Hunting Bugs | |
| |
| |
| |
Bugs We've Put in Your Ear | |
| |
| |
| |
Exercises | |
| |
| |
| |
Creating Graphical User Interfaces | |
| |
| |
| |
Using Module Tkinter | |
| |
| |
| |
Building a Basic GUI | |
| |
| |
| |
Models, Views, and Controllers, Oh My! | |
| |
| |
| |
Customizing the Visual Style | |
| |
| |
| |
Introducing a Few More Widgets | |
| |
| |
| |
Object-Oriented GUIs | |
| |
| |
| |
Keeping the Concepts from Being a GUI Mess | |
| |
| |
| |
Exercises | |
| |
| |
| |
Databases | |
| |
| |
| |
Overview | |
| |
| |
| |
Creating and Populating | |
| |
| |
| |
Retrieving Data | |
| |
| |
| |
Updating and Deleting | |
| |
| |
| |
Using NULL for Missing Data | |
| |
| |
| |
Using Joins to Combine Tables | |
| |
| |
| |
Keys and Constraints | |
| |
| |
| |
Advanced Features | |
| |
| |
| |
Some Data Based On What You Learned | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
Index | |