Customer Service 1-800-221-5528

Murach’s Python Programming (2nd Edition)

by Michael Urban and Joel Murach
18 chapters, 564 pages, 227 illustrations
Published April 2021
ISBN 978-1-943872-74-9
List price: $59.50

Because of its simple syntax, full set of features, and wide range of applications, Python is an ideal language for a first programming course. And our book takes advantage of the Python syntax and features to help beginners learn how to program faster and better than ever. Along the way, they’ll master the skills that are common to all programming languages so that learning the next language, like Java or C#, will be much easier. And at the end, they’ll have the basic Python skills that are in such demand today for applications ranging from web and game development to data analysis, scientific computing, artificial intelligence…and more!

Now available as a Canvas course!

The Canvas course file contains all the objectives, quizzes, assignments, and slides that you need to run an effective course. It only takes a few clicks to import it into the Canvas LMS. Then, you can customize it for your course. Learn more.

Today my whole class chimed in to tell me how much they love your Python book. I was shocked...it came out of nowhere. They told me it's the clearest textbook they have and wish all their textbooks used the same format."

- Elizabeth Drake, Professor/Programming & Analysis, Gainesville, Florida

  • About this Book
  • Table of Contents
  • Courseware
  • FAQs
  • Corrections

Book description

To present the essential Python skills in a manageable progression and at the right pace, this book is divided into four sections.

Section 1: Get your students off to a great start

  • Section 1 presents an 8-chapter course in Python programming that gets your students off to a solid start. In fact, by the end of chapter 2, they’ll have developed their first Python programs…programs that get input, process it, and display output…which is so much more motivating (and fun!) than writing a few lines of “Hello World” code that don’t have any practical application. This section is especially designed for beginners, but you can adapt the pace if your students have already taken an introductory programming course.
  • By the time your students finish chapter 4, they’ll be able to develop, test, and debug Python programs that are built entirely of modules and functions. They’ll also be able to use pseudocode to plan their control structures and programs, and to use hierarchy charts to plan the functions of their programs. Then, in chapter 5, they’ll learn advanced techniques for testing and debugging their programs, including the best Python techniques.
  • In chapters 6, 7, and 8, your students will learn how to use lists and tuples, how to use files for persistent data storage, and how to handle exceptions. This completes a section that by itself is an excellent first course in programming. And it will put your students far ahead of what they can accomplish with competing books.

Section 2: More essential concepts and skills

  • The first 4 chapters in section 2 present other skills that every Python programmer should have. That includes how to work with numbers, strings, dates and times, and dictionaries. Then, the last chapter in this section presents algorithms and recursion.
  • This book is designed so you can skip from section 1 to either section 2 or section 3. In addition, all of the chapters in section 2 are independent of one another, so you can assign them in whatever sequence you prefer, and you don’t have to assign all of them. This makes it easy for you to adapt this book to the time constraints and requirements of your course.

Section 3: Object-oriented programming

  • The 3 chapters in section 3 present object-oriented programming: the OOP essentials, when and how to use inheritance, and how to design an OO program. These essential concepts are the same in all modern-day programming languages, so once your students master them…which is easier to do in Python using our approach…they’ll be able to apply them in any other language they use.
  • Depending on the emphasis of your course, you can skip to this section right after you complete section 1. Then, you can return later to the chapters in section 2.

Section 4: Database and GUI programming

  • The 2 chapters in section 4 are solid introductions to database programming and GUI programming. This brings all of the skills of sections 1 and 3 into the context of real-world programming. For instance, the last database program in chapter 17 is a 3-tier, shopping cart program, complete with modules, classes, and functions.

What courses this book can be used for

A first programing course

  • This book is specifically designed for a first programming course. In fact, we recommend Python as a first programming language because of its simple syntax and full feature set. Once your students learn Python, they’ll be well prepared to learn a second language like Java, C++, or C#. They’ll also be ready to use their Python skills to go on to courses in data analysis, web development, games programming, or scientific computing.

A second language course

  • If you offer a Python course apart from your introductory programming course, this book will work for that too. It’s designed so you can move more quickly through the chapters in that case, skimming over familiar material and concentrating on the Python specifics or on concepts that your students are struggling with. In fact, if your students have used a book from another publisher for their first language course, our book will help you clarify any concepts they’re confused about, as you teach Python.

Why your students will learn faster and better with our book

We’re familiar with the competing Python books, and we’ve specifically designed this book to help your students learn faster and better than they can with any of them. Here are a few of the ways it does that:

  • There are two ways to simplify material: Avoid all complications (which is what too many books do) or present the material in the right order, at the right pace. We don’t think the no-complications approach gives students a true view of what programming is all about. So we present each piece slowly and methodically in section 1, building up skills and confidence, and then pick up the pace once the foundation is in place.
  • All the material is in our distinctive paired-pages format, where each topic is presented in a two-page spread: the examples and reference material are on the righthand page with additional explanation and perspective on the left. In today’s fast-paced world full of eager students who want to read less, do more, and pick up information on demand, it’s the ideal format. Students love it!
  • Besides fitting students’ learning style, the paired-pages format also helps your students do their assignments and prepare for tests by making it easy for them to review what they’ve learned and to refresh their memories on how to apply their new skills.
  • This book presents dozens of complete programs. In each chapter, the programs start simply to illustrate the new concepts and skills, but then show the new skills in the context of real-world programming. We have long felt that these programs are essential to effective learning, and no other publisher does this the way we do. Yes, other books present complete programs too, but when the programs are trivial, they limit what the students can be expected to learn.

What software your students need

  • Python can be downloaded for free, and it includes an integrated development environment called IDLE. So it’s easy for students to set up their own systems for this course. To help with that, appendixes A and B provide the procedures that are needed for Windows and macOS systems.
  • For chapter 17 on database programming, your students will also have to install DB Browser for SQLite. Here again, the appendixes provide the procedures for doing that.

What's new in this edition

This 2nd Edition has been thoroughly updated to cover Python 3.9. This includes new material on useful features such as f-strings, assignment expressions, dictionary operators, list comprehensions, and data classes. However, the table of contents for this book remains unchanged. As a result, you’ll find it easy to update your course to the 2nd Edition.

What people say about this book

“This is by far the best Python tutorial I have come across. Tried Udemy, Udacity, some other video and printed tutorials, but didn’t get the feel of it. Murach's side-by-side lecture & example really works for me. And the sample codes and exercises are valuable tutorials that any newbie will want to keep as reference materials. Really effective training style.”
- Posted at an online bookseller

“Best programming book on Python. You'll learn to love Murach's books. I learned Python and now I'm learning Java. I bought Murach's Java book even though we're using another one for class.”
- Posted online by a student

“I've been a fan of Murach's approach to teaching programming concepts and practices for many years. Now they've finally published a book on Python, and they've done a wonderful job. The book explores a wide breadth of topics to get you competent in the language and the conventions used by the Python community. A valuable resource for coders of all levels.”
- Jason Salas, Developer

“YouTube is not the same, this is way better: This book is super detailed in the right ways to learn. I have bought about three different authors and this guy is the best if you’re new and want to learn! Thank you for being such a great teacher.”
- Posted at an online bookseller

“I found this to be a fantastic book for taking folk with no Python knowledge to a good firm grasp to develop their own projects, as well as folk with some knowledge who want to shore up the gaps.
     “Each chapter does a really great job succinctly explaining the concept, why you would use it, has relevant code, and great summary/exercises to reinforce the area. The code is clean, well formatted, and uses great naming conventions. The projects and examples are spot on.
     “As a moderate Python user, I definitely learned a few new tricks, and reduced some complexity in my code. I have no qualms recommending this book for folk looking to pick up Python and use it!”
- Jeremy Johnson, DreamInCode.net

“This is now my third text book for python, and it is the ONLY one that has made me feel comfortable solving and reading problems or code respectively. The paired pages approach is fantastic, and it is probably the reason that makes learning the syntax, rules, and conventions understandable for me. I really do appreciate the authors’ ability to bring the concepts to life with this approach.”
- Posted at an online bookseller

“Murach isn't a publisher I was familiar with so I was surprised when I started reading its Python book and found it to be of such high quality. The text is clear and the examples are interesting. I really like that you get to write mini-programs in almost all of the chapters and they almost always do something besides just printing out a string.”
- Mike Driscoll, Programmer, Mouse vs Python blog

“Amazing book, I knew absolutely nothing about programming, now racing ahead of classes having used this book before I started schooling.”
- Posted at an online bookseller

View the table of contents for this book in a PDF: Table of Contents (PDF)

Click on any chapter title to display or hide its content.

Section 1 Essential concepts and skills

Chapter 1 An introduction to Python programming

Introduction to Python

Why Python works so well as your first programming language

Three types of Python applications

The source code for a console application

How Python compiles and runs source code

How disk storage and main memory work together

How to use IDLE to develop programs

How to use the interactive shell

How to work with source files

How to compile and run a program

How to fix syntax and runtime errors

Chapter 2 How to write your first programs

Basic coding skills

How to code statements

How to code comments

How to use functions

How to work with data types and variables

How to assign values to variables

How to name variables

How to work with numeric data

How to code arithmetic expressions

How to use arithmetic expressions in assignment statements

How to use the interactive shell for testing numeric operations

How to work with string data

How to assign strings to variables

How to join strings

How to include special characters in strings

How to use the interactive shell for testing string operations

How to use five of the Python functions

How to use the print() function

How to use the input() function

How to use the int(), float(), and round() functions

How to chain functions

Two illustrative programs

The Miles Per Gallon program

The Test Scores program

Chapter 3 How to code control statements

How to code Boolean expressions

How to use the relational operators

How to use the logical operators

How to compare strings

How to code the selection structure

How to code if statements

More examples of if statements

How to code nested if statements

How to use pseudocode to plan if statements

Two illustrative programs

The Miles Per Gallon program

The Invoice program

How to use the iteration structure

How to code while statements

How to code for statements

How to code break and continue statements

More examples of loops

How to use assignment expressions

How to use pseudocode to plan a program

Two illustrative programs

The Test Scores program

The Future Value program

Chapter 4 How to define and use functions and modules

How to define and use functions

How to define and call a function

How to define and call a main() function

The Future Value program with functions

More skills for defining and using functions

How to use default values for arguments

How to use named arguments

When and how to use local and global variables

How to create and use modules

How to create a module

How to document a module

How to import a module

The Convert Temperatures program

How to use standard modules

How to use the random module

The Guess the Number game

How to plan the functions of a program

How to use a hierarchy chart

The hierarchy chart for the Pig Dice game

The Pig Dice game

Chapter 5 How to test and debug a program

An introduction to testing and debugging

The three types of errors that can occur

Common Python errors

Four techniques for testing and debugging

How to plan the test runs

A simple way to trace code execution

How to use top-down coding and testing to simplify debugging

How to use the IDLE shell to test functions

How to use the IDLE debugger

How to set and remove breakpoints

How to step through the code

How to view the stack

Chapter 6 How to work with lists and tuples

Basic skills for working with lists

How to create a list

How to get and set items

How to add and remove items

How to process the items in a list

More skills for processing the items in a list

How lists are passed to functions

The Movie List program

How to work with a list of lists

How to create a list of lists

How to process the items in a list of lists

The Movie List 2D program

More skills for working with lists

How to count, reverse, and sort the items in a list

How to get minimum, maximum, sum, and random values from a list

How to copy, slice, and concatenate lists

How to map, filter, and reduce the items in a list

How to work with list comprehensions

How to work with tuples

How to create a tuple

How to get items from a tuple

The Number Crunching program

Chapter 7  How to work with file I/O

An introduction to file I/O

How file I/O works

How to open and close a file

How to use text files

How to write a text file

How to read a text file

How to work with a list in a text file

The Movie List 1.0 program

How to use CSV files

How to write a CSV file

How to read a CSV file

How to modify the CSV format

The Movie List 2.0 program

How to use binary files

How to work with a binary file

The Movie List 3.0 program

Chapter 8  How to handle exceptions

How to handle a single exception

How exceptions work

How to use a try statement to handle one type of exception

The Total Calculator program

How to handle multiple exceptions

How to use a try statement to handle multiple exceptions

How to get the information from an exception object

The Movie List 2.0 program

Two more skills

How to use a finally clause

How to raise an exception

Section 2 Other concepts and skills

Chapter 9 How to work with numbers

Basic skills for working with numbers

How floating-point numbers work

How to use the math module

How to format numbers

How to use format specifications with f-strings

How to use the locale module

How to fix rounding errors

How to work with decimal numbers

How to use the decimal module

The Invoice program with decimal numbers

The Future Value program with decimal numbers

Chapter 10 How to work with strings

Basic skills for working with strings

Unicode, indexes, slicing, duplicating, and multiline strings

How to search a string

How to loop through the characters in a string

How to use basic string methods

How to find, remove, and replace parts of a string

The Create Account program

How to split and join strings

How to split a string into a list of strings

How to join strings

The Movie List 2.0 program

The Word Counter program

The Hangman game

The user interface

The hierarchy chart

The wordlist module

The hangman module

Chapter 11 How to work with dates and times

How to get started with dates and times

How to create date, time, and datetime objects

How to create datetime objects by parsing strings

How to format dates and times

How to work with spans of time

The Invoice Due Date program

The Timer program

More skills for working with dates and times

How to get date and time parts

How to compare date/time objects

The Hotel Reservation program

Chapter 12 How to work with dictionaries

How to get started with dictionaries

How to create a dictionary

How to get, set, and add items

How to delete items

How to loop through keys and values

How to convert between dictionaries and lists

The Country Code program

The Word Counter program

More skills for working with dictionaries

How to use the merge and update operators

How to use dictionaries with complex objects as values

The Book Catalog program

Chapter 13 How to work with recursion and algorithms

An introduction to recursion

How recursion works in Python

How to use recursion to add a range of numbers

Some common recursive algorithms

How to compute the factorial of a number

How to compute a Fibonacci series

An algorithm for solving the Towers of Hanoi puzzle

The code for solving the Towers of Hanoi puzzle

Section 3 Object-oriented programming

Chapter 14 How to define and use your own classes

An introduction to classes and objects

Two UML diagrams for the Product class

Code that defines a Product class

Code that uses a Product class

How to create and use objects

How to define a class

How to code a constructor and attributes

How to code methods

The Product Viewer 1.0 program

How work with object composition

How object composition works

The Die and Dice classes

The Dice Roller 1.0 program

How to work with encapsulation

How object encapsulation works

How to hide attributes

How to access hidden attributes with methods

How to access hidden attributes with properties

The Die and Dice classes with encapsulation

The Product class with some encapsulation

The Pig Dice game

The console

The code

Chapter 15 How to work with inheritance

How to work with inheritance

How inheritance works

How to define a subclass

How polymorphism works

How to check an object’s type

The Product Viewer 2.0 program

The objects module

The user interface and product_viewer module

How to override object methods

How to define a string representation for an object

How to define an iterator for an object

The Die and Dice classes

Two more skills for the road

How to work with custom exceptions

When to use inheritance

Chapter 16 How to design an object-oriented program

Techniques for object-oriented design

Five steps for designing an object-oriented program

How to identify the data attributes

How to subdivide the data attributes

How to identify the classes

How to identify the methods and properties

How the three-tier architecture works

The Shopping Cart program

The business tier

The database tier

The presentation tier

Section 4 Database and GUI programming

Chapter 17 How to work with a database

An introduction to relational databases

How a database table is organized

How the tables in a database are related

How the columns in a table are defined

How to use the SQL statements for data manipulation

How to select data from a single table

How to select data from multiple tables

How to insert, update, and delete rows

How to use DB Browser for SQLite to work with a database

How to use DB Browser to view and edit a table in a SQLite database

How to use DB Browser to run SQL statements

How to use Python to work with a database

How to connect to a SQLite database

How to execute SELECT statements

How to get the rows in a result set

How to execute INSERT, UPDATE, and DELETE statements

How to test the database code

How to handle database exceptions

The Movie List program

The user interface

The business tier

The database tier

The presentation tier

Chapter 18 How to build a GUI program

How to create a GUI that handles an event

How to display a root window

How to work with frames and buttons

How to handle a button click event

More skills for working with components

How to work with labels and text entry fields

How to lay out components in a grid

How to code a class that defines a frame

How to display a message box

The Future Value program

The business module

The ui module

Appendix

Appendix A How to set up Windows for this book

How to install the source code for this book

How to install Python and IDLE

How to install DB Browser for SQLite

How to use DB Browser to verify or restore a database

Appendix B How to set up macOS for this book

How to install the source code for this book

How to install Python and IDLE

How to verify that Python and IDLE are working correctly

How to install DB Browser for SQLite

How to use DB Browser to verify or restore a database

In contrast to other college publishers, we don’t fill dozens of pages in our books with end-of-chapter (EOC) activities that may never be used. Instead, we provide everything you need for an effective course in a download from our instructor’s website. Then, you decide which of these materials you want to use.

What follows is a brief summary of the instructor’s materials for this book; for a detailed description in PDF, please read the Instructor's Summary. As we see it, these materials provide everything that you need for running a great course...without the counter-productive busywork of other texts.

EOC exercises

  • In the EOC activities for all of our books, you’ll find carefully designed exercises that let your students (1) practice what they’ve just learned and (2) help them apply what they’ve learned in new ways.
  • What’s different about these? Other books may have a ton of exercises, but each covers maybe one or two skills at a time. So if you assign one, or even a dozen, students still don’t get to practice all the other skills, and they never see how the skills interact. But if you assign just one of the exercises in our Python book, your students will apply and practice almost everything in the chapter, as they would in the real world.
  • Our exercises start from partial programs, so your students can focus on new skills and not waste time on repetitive code that they’d never code from scratch in a work environment.
  • Students can download the solutions to the EOC exercises (as well as the exercise starts) for free from our retail website. We started providing the solutions for the professionals who use our books for self-training. But we’ve found that they keep students from giving up when they get stuck on a problem at midnight, and that the model code also helps them refine their future work. And don’t worry! We provide additional projects and case studies that you can use for testing, where the solutions are available only to instructors (see below).
  • Taken together, this unique system allows students to practice more…and learn more!…in much less time.

Objectives

  • Today, most textbooks include objectives, but they are often so poorly conceived that they are ignored by both students and instructors. In contrast, we provide objectives that describe the skills that the students should master, and mastery can be measured by the test banks, projects, and case studies that we provide. As a result, our objectives actually do facilitate learning.

Test banks

  • To test comprehension, we provide test banks in multiple formats, including Blackboard (which can be imported into Canvas and D2L Brightspace), RTF (Word), ExamView, Respondus, and IMS QTI (the standard test bank format). 
  • Each test bank provides questions that are designed to test the skills described by the objectives for that chapter, and each test question is designed to test the skill described by one objective. This keeps the promise to the students that they will only be expected to have the skills that are described by the objectives.
  • In the test banks, we use only multiple-choice test questions because they’re easy to score and (more important) have the highest validity. In other words, the students with the best knowledge and skills will get the best scores. In contrast, matching and true/false questions have low validity, so we don’t use them.

Projects

  • The best way to develop programming skills is to write, test, and debug programs from scratch. To that end, we provide a set of projects for each chapter. These projects can be used for both practice and tests.
  • To make the projects as useful as possible, ours provide a range of difficulty levels. That way, you can assign projects at levels that are appropriate for the students in your class.
  • Because your students should be able to finish some of these projects in an hour or less, you can also use these projects as tests that can be done in a computer lab. That is the only sure way to test whether your students have the skills described by the objectives.

Case studies

  • We also provide case studies for this book that can be used as midterm or final projects. These case studies are designed so they shouldn’t take more than 10 or 12 hours. But they are also designed so you can easily modify them so they’re more or less difficult.

PowerPoint slides

  • In our books, the figures present all of the critical information including screen shots, diagrams, tables, examples, and programs. Then, we build our PowerPoint slides from the figures, which means that our slides let you review everything that’s presented in the book. This makes it easy to answer any questions that your students raise or review any skills that your students are having trouble with.
  • The slides for each chapter start with the chapter objectives. That helps your students stay focused on what they’ll learn and be tested on.

A turnkey package

  • Our instructor’s materials also include everything else that you need for the course, like all the starting files and solutions for the projects and case studies. So what you end up with is a turnkey package for a powerful Python course.

On this page, we’ll be posting answers to the questions that come up most often about this book. So if you have any questions that you haven’t found answered here at our site, please email us. Thanks!

To view the corrections for this book in a PDF, just click on this link: View the corrections

Then, if you find any other errors, please email us so we can correct them in the next printing of the book. Thank you!

Murach college books and courseware since 1974