Learn Python The Hard Way
    Release 2.0

    Zed A. Shaw

    June 24, 2011

    CONTENTS

    The Hard Way Is Easier
    Reading and Writing . . . . . . . .
    Attention to Detail . . . . . . . . .
    Spotting Differences . . . . . . . .
    Do Not Copy-Paste . . . . . . . . .
    A Note On Practice And Persistence
    License . . . . . . . . . . . . . . .
    Special Thanks . . . . . . . . . . .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .
    .

    3
    3
    3
    4
    4
    4
    5
    5

    Exercise 0: The Setup
    Mac OSX . . . . . . . .
    Windows . . . . . . . .
    Linux . . . . . . . . . .
    Warnings For Beginners .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    7
    7
    8
    10
    12

    Exercise 1: A Good First Program
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    13
    13
    14

    Exercise 2: Comments And Pound Characters
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    17
    17
    17

    Exercise 3: Numbers And Math
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    19
    20
    20

    Exercise 4: Variables And Names
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    21
    22
    22

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    i

    Exercise 5: More Variables And Printing
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    23
    24
    24

    Exercise 6: Strings And Text
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    25
    26
    26

    Exercise 7: More Printing
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    27
    27
    28

    Exercise 8: Printing, Printing
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    29
    29
    29

    Exercise 9: Printing, Printing, Printing
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    31
    31
    32

    Exercise 10: What Was That?
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    33
    34
    34

    Exercise 11: Asking Questions
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    35
    36
    36

    Exercise 12: Prompting People
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    37
    37
    38

    Exercise 13: Parameters, Unpacking, Variables
    Hold Up! Features Have Another Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    39
    40
    40
    41

    Exercise 14: Prompting And Passing
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    43
    44
    44

    Exercise 15: Reading Files
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    45
    46
    46

    Exercise 16: Reading And Writing Files
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    49
    50

    ii

    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    51

    Exercise 17: More Files
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    53
    54
    54

    Exercise 18: Names, Variables, Code, Functions
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    55
    56
    57

    Exercise 19: Functions And Variables
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    59
    60
    60

    Exercise 20: Functions And Files
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    61
    62
    62

    Exercise 21: Functions Can Return Something
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    63
    64
    64

    Exercise 22: What Do You Know So Far?
    What You are Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    67
    67

    Exercise 23: Read Some Code

    69

    Exercise 24: More Practice
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    71
    72
    72

    Exercise 25: Even More Practice
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    73
    74
    75

    Exercise 26: Congratulations, Take A Test!

    77

    Exercise 27: Memorizing Logic
    The Truth Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    The Truth Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    79
    80
    80

    Exercise 28: Boolean Practice
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    83
    85
    85

    Exercise 29: What If
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    87
    88

    iii

    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    88

    Exercise 30: Else And If
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    89
    90
    90

    Exercise 31: Making Decisions
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    91
    92
    93

    Exercise 32: Loops And Lists
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    95
    96
    97

    Exercise 33: While Loops
    99
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
    Exercise 34: Accessing Elements Of Lists
    103
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
    Exercise 35: Branches and Functions
    105
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
    Exercise 36: Designing and Debugging
    Rules For If-Statements . . . . . . .
    Rules For Loops . . . . . . . . . . .
    Tips For Debugging . . . . . . . . .
    Homework . . . . . . . . . . . . . .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    .
    .
    .
    .

    109
    109
    110
    110
    110

    Exercise 37: Symbol Review
    Keywords . . . . . . . . .
    Data Types . . . . . . . .
    String Escapes Sequences .
    String Formats . . . . . . .
    Operators . . . . . . . . .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    111
    111
    112
    113
    113
    114

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    Exercise 38: Reading Code
    117
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
    Exercise 39: Doing Things To Lists
    119
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
    Exercise 40: Dictionaries, Oh Lovely Dictionaries
    123
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
    iv

    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
    Exercise 41: Gothons From Planet Percal #25
    127
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
    Exercise 42: Gothons Are Getting Classy
    135
    What You Should See . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
    Extra Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
    Exercise 43: You Make A Game

    143

    Exercise 44: Evaluating Your Game
    Function Style . . . . . . . . . . .
    Class Style . . . . . . . . . . . . .
    Code Style . . . . . . . . . . . . .
    Good Comments . . . . . . . . .
    Evaluate Your Game . . . . . . .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .
    .
    .
    .
    .

    .