Home > Store

Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code, Rough Cuts

Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code, Rough Cuts

Rough Cuts

  • Available to Safari Subscribers
  • About Rough Cuts
  • Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.

Not for Sale

Also available in other formats.


  • Copyright 2018
  • Dimensions: 7" x 9-1/8"
  • Pages: 320
  • Edition: 1st
  • Rough Cuts
  • ISBN-10: 0-13-469388-4
  • ISBN-13: 978-0-13-469388-0

This is the Rough Cut version of the printed book.

You Will Learn Python!

Zed Shaw has perfected the world's best system for learning Python. Follow it and you will succeed-just like the hundreds of thousands of beginners Zed has taught to date! You bring the discipline, commitment, and persistence; the author supplies everything else.

In Learn Python 3 the Hard Way, you'll learn Python by working through 52 brilliantly crafted exercises. Read them. Type their code precisely. (No copying and pasting!) Fix your mistakes. Watch the programs run. As you do, you'll learn how software works; what good programs look like; how to read, write, and think about code; and how to find and fix your mistakes using tricks professional programmers use. Most importantly, you'll learn the following, which you need to start writing excellent Python software of your own:

  • Installing a complete Python environment
  • Organizing and writing code
  • Basic mathematics
  • Variables
  • Strings and text
  • Interacting with users
  • Working with files
  • Looping and logic
  • Data structures using lists and dictionaries
  • Program design
  • Object-oriented programming
  • Inheritance and composition
  • Modules, classes, and objects
  • Python packaging
  • Debugging
  • Automated testing
  • Basic game development
  • Basic web development

It'll be hard at first. But soon, you'll just get it-and that will feel great!

This tutorial will reward you for every minute you put into it. Soon, you'll know one of the world's most powerful, popular programming languages. You'll be a Python programmer.

Sample Content

Table of Contents



Exercise 1: A Good First Program

Exercise 2: Comments and Pound Characters

Exercise 3: Numbers and Math 38

Exercise 4: Variables and Names

Exercise 5: More Variables and Printing

Exercise 6: Strings and Text

Exercise 7: More Printing

Exercise 8: Printing, Printing

Exercise 9: Printing, Printing, Printing

Exercise 10: What Was That?

Exercise 11: Asking Questions

Exercise 12: Prompting People

Exercise 13: Parameters, Unpacking, Variables

Exercise 14: Prompting and Passing

Exercise 15: Reading Files

Exercise 16: Reading and Writing Files

Exercise 17: More Files

Exercise 18: Names, Variables, Code, Functions

Exercise 19: Functions and Variables

Exercise 20: Functions and Files

Exercise 21: Functions Can Return Something

Exercise 22: What Do You Know So Far?

Exercise 23: Strings, Bytes, and Character Encodings

Exercise 24: More Practice

Exercise 25: Even More Practice

Exercise 26: Congratulations, Take a Test!

Exercise 27: Memorizing Logic

Exercise 28: Boolean Practice

Exercise 29: What If

Exercise 30: Else and If

Exercise 31: Making Decisions

Exercise 32: Loops and Lists

Exercise 33: While Loops

Exercise 34: Accessing Elements of Lists

Exercise 35: Branches and Functions

Exercise 36: Designing and Debugging

Exercise 37: Symbol Review

Exercise 38: Doing Things to Lists

Exercise 39: Dictionaries, Oh Lovely Dictionaries

Exercise 40: Modules, Classes, and Objects

Exercise 41: Learning to Speak Object-Oriented

Exercise 42: Is-A, Has-A, Objects, and Classes

Exercise 43: Basic Object-Oriented Analysis and Design

Exercise 44: Inheritance Versus Composition

Exercise 45: You Make a Game

Exercise 46: A Project Skeleton

Exercise 47: Automated Testing

Exercise 48: Advanced User Input

Exercise 49: Making Sentences

Exercise 50: Your First Website

Exercise 51: Getting Input from a Browser

Exercise 52: The Start of Your Web Game

Next Steps

Advice from an Old Programmer

Appendix A: Command Line Crash Course


Submit Errata

More Information